我使用 Matlab 的profile
. double 和 uint64 都是 64 位变量。为什么比较两个 double 比比较两个 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 位数据类型时,效果会消失。