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);

tic toc告诉我:6.56s,而在配置文件中显示:

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

这意味着这条线有 10 次迭代需要 18.16 秒。我不明白为什么使用分析器需要更长的时间。

4

1 回答 1

3

我过去发现的一个问题是分析器以某种方式干扰了 JIT 编译器。我正在研究其他人的代码,其中包含很多“fortran 风格”的 for 循环,无论如何,这些代码在命令行上似乎运行得相当快,这可能是由于 JIT 完成了它的工作。通过分析器运行它时,它的速度慢了 10 倍以上!

如果你正在做很多分析,你可能想看看timeit文件交换的优秀功能。

于 2013-09-20T14:11:47.853 回答