为了比较两个函数的执行时间,我编写了一个代码,其中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矩阵测试,有时候,我保存数据以比较相同的输入,但结果仍然相同。
答案 0 :(得分:0)
您可以使用
观看代码效果profile on;
myFunction();
profile viewer;