Mức độ phổ biến là rep movsb
chậm hơn nhiều so với rep movsd
(hoặc trên 64 bit, rep movsq
) khi thực hiện các thao tác giống hệt nhau. Tuy nhiên, tôi đã thử nghiệm trên một vài máy móc hiện đại, và thời gian chạy được phát ra giống nhau (lên đến tiếng ồn đo lường) trên một phạm vi rộng lớn các kích thước bộ đệm (10 byte đến 2 megs). Cho đến nay tôi vừa thử nghiệm trên 2 máy (Intel Atom D510 32 bit và AMD FX 8120 64 bit).Thông tin đáng tin cậy về hiệu suất lệnh x86 chuỗi?
Có bất kỳ x86 hiện đại (32 hoặc 64-bit) máy nơi
rep movsb
là chậm hơn so vớirep movsd
(hoặcrep movsq
)?Nếu không, máy cuối cùng có sự khác biệt là gì, và mức độ quan trọng của nó là bao nhiêu?
Tôi hỏi câu hỏi này từ một góc độ muốn tránh hàng-culting một loạt các xét nghiệm để phá vỡ bộ nhớ lên unaligned đầu/đuôi và trung liên kết vì lợi ích của việc sử dụng rep movsd
hoặc rep movsq
nếu không có lợi ích thực tế để làm điều này ...
Kết quả hiệu suất của bạn cho các máy hiện đại là chính xác. –
Nó được điều chỉnh bởi băng thông bus bộ nhớ, chứ không phải CPU. –
Về lý thuyết có thể đúng, nhưng các cách sao chép khác (ví dụ: vòng lặp C) chậm hơn 2-8x. Vì vậy, thời gian cpu dành cho việc tạo ra sự khác biệt. –