调用函数中的MATLAB tic/toc



在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

最新更新