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
,它计算操作+打印的时间。这不是需要时间的任务。