我使用Matlab的profile
分析了以下程序。 double和uint64都是64位變量。爲什麼比較兩個double要比比較兩個uint64快得多?它們都不是按比例對比的嗎?爲什麼比uint64快兩倍?
big = 1000000;
a = uint64(randi(100,big,1));
b = uint64(randi(100,big,1));
c = uint64(zeros(big,1));
tic;
for i=1:big
if a(i) == b(i)
c(i) = c(i) + 1;
end
end
toc;
a = randi(100,big,1);
b = randi(100,big,1);
c = zeros(big,1);
tic;
for i=1:big
if a(i) == b(i)
c(i) = c(i) + 1;
end
end
toc;
這是曲線的測量:
這是tictoc措施:
Elapsed time is 6.259040 seconds.
Elapsed time is 0.015387 seconds.
效果消失時uint8..uint32或int8..int32是而不是64位數據類型。
我不知道Matlab的,但比較,看它們是否彼此的距離小量內頻繁一倍。這使得比較更加繁瑣。 – 2013-04-22 23:04:49
@EricJ。恐怕不是這種情況。這個問題也有點困惑。 – jazzbassrob 2013-04-22 23:05:55
從你的結果看來,比較雙打比uint64快得多 – Jonas 2013-04-22 23:09:07