在MATLAB中,我想为其他人编写的函数计时,他们的函数可能在内部使用tic
/toc
。我想要我自己的tic
/toc
。但是,如果内部函数调用tic
,那么外部计时器将被重置。
我该如何避免这种情况?我不想使用timeit
,因为timeit
会多次调用内部函数,这是我不想要的。
MWE:
外部脚本:
tic
inner_function()
elapsed_time = toc;
fprintf('Function took %f secondsn', elapsed_time)
内部功能:
function [] = inner_function()
pause(2)
tic
toc
end
然后:
>> outer_script
Elapsed time is 0.000024 seconds.
Function took 0.000232 seconds
如果你在inner_function()
中注释掉tic
/toc
,你就会得到这个,这就是我想要的:
>> outer_script
Function took 2.000362 seconds
只是为了获得更多的上下文,外部脚本是我的,我用它来测试我的学生编写的函数。我希望允许他们在代码中使用tic
/toc
,但我也希望能够独立地对代码进行计时。
您可以通过将tic
调用分配给一个变量来实现这一点。稍后将您想要的计时器作为参数提供给toc
。
function [] = inner_function()
pause(2)
tic
toc
end
重新运行修改后的示例
clock2 = tic;
inner_function()
elapsed_time = toc(clock2);
fprintf('Function took %f secondsn', elapsed_time)
Elapsed time is 0.000009 seconds.
Function took 2.009997 seconds