Matlab の を使用して、次のプログラムを解析しましたprofile
。double と uint64 はどちらも 64 ビット変数です。2 つの double を比較すると、2 つの 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.
64 ビット データ型の代わりに uint8..uint32 または int8..int32 を使用すると、この効果はなくなります。