Có vô số các biến được căn chỉnh trên các ranh giới từ nhanh hơn các phép tính tải chưa được ký trên bộ xử lý x86/64 (Intel/AMD 64 bit) không?Tải từ được căn chỉnh nhanh hơn các tải chưa được căn chỉnh trên bộ vi xử lý x64?
Một đồng nghiệp của tôi cho rằng tải không được căn chỉnh chậm và cần tránh. Ông trích dẫn việc đệm các hạng mục vào các ranh giới từ trong các cấu trúc như là một bằng chứng cho thấy các tải không được sắp xếp là chậm. Ví dụ:
struct A {
char a;
uint64_t b;
};
Cấu trúc A thường có kích thước 16 byte.
Mặt khác, trạng thái documentation of the Snappy compressor cho biết Snappy giả định rằng "tải và cửa hàng 32 và 64 bit không được ký hiệu là giá rẻ". Theo mã nguồn, điều này đúng với bộ vi xử lý Intel 32 và 64 bit.
Vì vậy: Sự thật ở đây là gì? Nếu và bởi bao nhiêu là tải unaligned chậm hơn? Trong hoàn cảnh nào?
Việc đóng gói cấu trúc mặc định là 8, vì vậy Một thành viên b :: được trong thực tế liên kết. Các thành viên không được sắp xếp có thể nằm trong dòng bộ nhớ cache và điều đó luôn đắt đỏ. –