在matlab

时间:2017-04-12 13:00:16

标签: matlab

为了比较两个函数的执行时间,我编写了一个代码,其中i测量每个函数和每个索引所用的时间(使用命令clock / etime)。但是,在我的计算机上,第一个功能比第二个功能更快,而在另一台计算机上,则相反。 (我尝试了几次不同的索引并且每次都清除数据,但结果仍然相同)。

你能解释一下为什么会有这样的差异吗?

修改

我编辑了我的问题以显示更多细节。 我想比较卷积(优化代码)与fft的执行时间。 第一个代码是conv2fft(我发现它在互联网上。它基于mex代码)。 第二个是fft的计算。这是第二个代码:

     function xcorr_ab = freqxcorr(T,A)
T_size = size(T);
A_size = size(A);
outsize = A_size + T_size - 1;
% calculate correlation in frequency domain
Fa = fft2(rot90(T,2),outsize(1),outsize(2));
Fb = fft2(A,outsize(1),outsize(2));
xcorr_ab = ifft2(Fa .* Fb,'symmetric');
end

比较速度的代码是:

 T=rand (800,1280);
j=1;
profile on;
for i=2:0.5:12
    ii=i*10;
    C{j}=rand(ii,ii);
    conv2fft(C{j},T);
    freqxcorr(C{j},T);  
    j=j+1;
  end
  profile viewer;

在第一台计算机(matlab r2017a,一台快速计算机)上,探查器显示: profiler on the first computer

在第二个(慢速计算机,matlab r2017a): profiler on the second computer

通常情况下,在第二台计算机上,它会更慢,但是发现奇怪的是两台计算机上最快的功能并不相同。

我还想提一下,即使我用rand矩阵测试,有时候,我保存数据以比较相同的输入,但结果仍然相同。

1 个答案:

答案 0 :(得分:0)

您可以使用

观看代码效果
profile on; 
myFunction(); 
profile viewer;