| 程式碼片段 | 耗時 (ms) | 相對效能 |
|---|---|---|
for(int i=100000; --i>=0;) b = a >> 10; |
307 | 基準 (100%) |
for(int i=100000; --i>=0;) b = a / 1024; |
584 | 90% 慢於位移 |
for(int i=0; i<100000; i++) b = a / 1024; |
647 | 110% 慢於位移 |
for(int i=0; i<100000; i++) b = a >> 10; |
354 | 15% 慢於倒序位移 |
for(int i = n; --i >= 0;) 倒序遞減,比正序 i++ 快約 15%。原因:結束條件比較 0 比 n 更快,且避免額外臨時變數。>> N (或 >>= N),效能提升約 90%。乘法同理改用左移 << N。