在MATLAB中,我想给其他人编写的函数计时,他们的函数可能在内部使用tic
/ toc
。我需要自己的tic
/ toc
。但是,如果内部函数调用tic
,则外部定时器将重置。
如何避免这种情况?我不想使用timeit
,因为timeit
会多次调用内部函数,这是我不希望的。
MWE:
外部脚本:
tic
inner_function()
elapsed_time = toc;
fprintf('Function took %f seconds\n', elapsed_time)
内部功能:
function [] = inner_function()
pause(2)
tic
toc
end
然后:
>> outer_script
Elapsed time is 0.000024 seconds.
Function took 0.000232 seconds
如果您将tic
中的toc
/ inner_function()
注释掉,您会得到这个,这正是我想要的:
>> outer_script
Function took 2.000362 seconds
仅需更多上下文,外部脚本就是我的,我用它来测试学生编写的功能。我想允许他们使用tic
/ toc
,但是他们希望在代码中使用它们,但是我也希望能够独立地计时他们的代码。
答案 0 :(得分:6)
您可以通过将tic
调用分配给变量来实现。稍后将所需的计时器作为参数提供给toc
。
function [] = inner_function()
pause(2)
tic
toc
end
运行修改后的示例,
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