Matlab 绩效衡量:如何避免将toc分配给变量的计时
这是我的代码,输出是Matlab 绩效衡量:如何避免将toc分配给变量的计时,matlab,Matlab,这是我的代码,输出是 for i=1:1 tic; M=R*R; toc; elapsed_time = toc; fprintf('Function took %8f seconds\n', elapsed_time) x = sprintf('%0.8f',t); tsum = t+tsum; end 第一次(经过的时间)是仅计算M=R*R 时间但当我打印出计算的时间(函数耗时)时,时间值会增加,因为它还计算分配操作(已用时间=toc;)。如何计算忽
for i=1:1
tic; M=R*R; toc;
elapsed_time = toc;
fprintf('Function took %8f seconds\n', elapsed_time)
x = sprintf('%0.8f',t);
tsum = t+tsum;
end
第一次(经过的时间)是仅计算M=R*R
时间但当我打印出计算的时间(函数耗时)时,时间值会增加,因为它还计算分配操作(
已用时间=toc;
)。如何计算忽略赋值操作的变量中的时间?您正在使用toc
两次,没有第二次tic
。您只需在第一次为toc
输出分配一个变量。相信我,这个变量赋值根本不需要时间:
Elapsed time is 0.000355 seconds.
Function took 0.000483 seconds
您正在使用
toc
两次,没有第二次tic
。您只需在第一次为toc
输出分配一个变量。相信我,这个变量赋值根本不需要时间:
Elapsed time is 0.000355 seconds.
Function took 0.000483 seconds
关于您的代码和Matlab中的基准测试的一些一般性评论:1)您使用的还有一个“t”未赋值,它会抛出一个错误2)这是一个非常小的基准测试。甚至官方的matlab指南也敦促您对耗时超过1/10秒的函数计时。您所看到的是指示性的(关于另一个函数,您可能需要花费时间),但与实际花费的时间不太准确。3) 使用
timeit
函数可以实现更好的基准测试。两次调用toc
之间需要时间的是控制台输出。对toc
的第一次调用确定操作的时间,然后打印“经过的时间是…”。接下来再次调用toc
,它计算操作+打印的时间。这不是需要时间的任务。关于你的代码和Matlab中的基准测试的一些一般性评论:1)你使用的还有一个“t”未赋值,它会抛出一个错误2)这是一个非常小的基准测试。甚至官方的matlab指南也敦促您对耗时超过1/10秒的函数计时。您所看到的是指示性的(关于另一个函数,您可能需要花费时间),但与实际花费的时间不太准确。3) 使用timeit
函数可以实现更好的基准测试。两次调用toc
之间需要时间的是控制台输出。对toc
的第一次调用确定操作的时间,然后打印“经过的时间是…”。接下来再次调用toc
,它计算操作+打印的时间。这不是需要时间的任务。