性能测量:如何避免将TOC分配给变量


for i=1:1
    tic; M=R*R; toc;
    elapsed_time = toc;
    fprintf('Function took %8f secondsn', elapsed_time)
    x = sprintf('%0.8f',t);
    tsum = t+tsum;
end

这是我的代码,输出为

Elapsed time is 0.000355 seconds.
Function took 0.000483 seconds

第一次(经过的时间)是仅计算M=R*R的时间时间,但是当我打印出计算的时间(函数所取)时,时间值也会增加,因为它还计算分配操作(elapsed_time = toc;)。如何计算忽略分配操作的变量中的时间?

您使用的是toc两次,而没有第二个tic。您只需要第一次为toc分配一个变量即可。相信我,这个变量分配根本不需要时间:

for i=1:1
tic; M=R*R; 
elapsed_time = toc;
fprintf('Function took %8f secondsn', elapsed_time)
x = sprintf('%0.8f',t);

tsum = t+tsum;
end

最新更新