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