Tôi đã phân tích chương trình sau bằng cách sử dụng số profile
của Matlab. Cả double và uint64 đều là các biến 64 bit. Tại sao so sánh hai đôi nhanh hơn nhiều so với hai uint64? Cả hai đều không được so sánh một chút?Tại sao so sánh gấp đôi nhanh hơn 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;
Đây là phép đo của hồ sơ:
Đây là những biện pháp tictoc:
Elapsed time is 6.259040 seconds.
Elapsed time is 0.015387 seconds.
Tác động biến mất khi uint8..uint32 hoặc int8..int32 là được sử dụng thay cho các kiểu dữ liệu 64 bit.
Tôi không biết về Matlab, nhưng đôi khi thường được so sánh để xem liệu chúng có nằm trong khoảng cách epsilon của nhau hay không. Điều đó làm cho việc so sánh cồng kềnh hơn. –
@EricJ. Không phải là trường hợp trong MATLAB, tôi sợ. Ngoài ra một chút bối rối bởi câu hỏi này. – jazzbassrob
từ kết quả của bạn có vẻ như so sánh gấp đôi nhanh hơn nhiều so với uint64 – Jonas