MATLAB tic/toc中的被调用函数

Lar*_*610 2 matlab timer

在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/ tocinner_function()你这一点,这就是我想要的:

>> outer_script
Function took 2.000362 seconds
Run Code Online (Sandbox Code Playgroud)

只是为了更多的上下文,外部脚本是我的,我用它来测试我的学生写的函数.我想允许他们在他们的代码中使用tic/ toc但是他们想要,但我也希望能够独立地为他们的代码计时.

Mat*_*att 6

您可以通过将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)