为什么在Matlab分析器中单行代码运行速度比使用tic命令计时慢?

3

我正在尝试使用性能分析器和 tic toc 命令来测量代码的时间。例如:

 tfconv_start=tic;
 for j=1:ordernum
      W_fft(:,:,j) = kernel_conv2fft_ver2(Mf,Hf(:,:,j),Hf_fft(:,:,j)./u,'same');
      Rffft=Rffft+mju(j)*(abs(W_fft(:,:,j).^2));
 end
 tfconv_elapsed=toc(tfconv_start);

tictoc告诉我:6.56秒,而在概要中它显示:

18.16      10   W_fft(:,:,j)=kernel_conv2fft_ver2(Mf,Hf(:,:,j),Hf_fft(:,:,j)./u,'same');

这意味着这行代码执行10次耗时为18.16秒。我不理解为什么使用分析工具会花费更长时间。
1个回答

3
过去我发现的一个问题是分析器与JIT编译器有所干扰。当我在研究另一个人的代码时,发现大量“fortran-style” for循环运行速度相对较快,可能是由于JIT的工作。但是,当通过分析器运行时,速度慢了超过10倍!
如果你需要进行大量分析,请查看文件交换中优秀的timeit函数。(链接)

2
请注意,在最新版本(R2013b)中,MATLAB提供了更新的timeit版本。 - Sam Roberts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接