我使用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