Tôi muốn biết nếu thực hiện một sự thay đổi đúng hợp lý là nhanh hơn khi chuyển bằng một sức mạnh của 2. Tôi đang sử dụng C + +.Là sự dịch chuyển hợp lý bằng sức mạnh của 2 nhanh hơn?
Ví dụ, là
myUnsigned >> 4
nhanh hơn bất kỳ
myUnsigned >> 3
tôi đánh giá cao phản ứng đầu tiên của mọi người sẽ nói với tôi rằng người ta không nên lo lắng những điều nhỏ nhặt về nhỏ như thế này, đó là sử dụng các thuật toán và bộ sưu tập chính xác để cắt các đơn đặt hàng có độ lớn quan trọng. Tôi hoàn toàn đồng ý với bạn, nhưng tôi thực sự cố gắng để ép tất cả tôi có thể ra khỏi một chip nhúng (một ATMega328) - Tôi chỉ có một sự thay đổi hiệu suất xứng đáng với một 'woohoo!' bằng cách thay thế một phân chia với một chút thay đổi, vì vậy tôi hứa với bạn rằng điều này không quan trọng.
Cảm ơn bạn.
Tại sao bạn không tự đo mình? –
Ai quan tâm nếu 'x >> 4' nhanh hơn' x >> 3'? Họ có ngữ nghĩa khác nhau, vì vậy nó không quan trọng cái nào là nhanh hơn. Dù sao, tôi chưa bao giờ gặp phải một kiến trúc mà toán hạng bên phải của một toán tử thay đổi bit có bất kỳ tác động hiệu suất nào. – fredoverflow
@FredOverflow: Trên ATMega, lệnh bit-shift không thực hiện một "số bit để dịch chuyển" toán hạng. Về 'x >> 4' so với' x >> 3' - có lẽ OP có một số tự do ở đây (ví dụ như làm số học điểm cố định và có một số lượng vĩ độ nhất định trong thành phần phân số là bao nhiêu) –