1. 程式人生 > >分支預測(branch prediction)

分支預測(branch prediction)

https ati -i 問題 href .com red dict log

  記錄一個在StackOverflow上看到一個十分有趣的問題:問題

  高票答案的優化方法:

  首先找到罪魁禍首:

if (data[c] >= 128)
    sum += data[c];

  優化方案使用位操作:

int t = (data[c] - 128) >> 31;
sum += ~t & data[c];

  正數右移31一定為0,負數右移31一定為-1。再取反進行求&(按位與),0與任何數的&為0,-1與任何數的&為數本身。這樣就巧妙的避開分支預測了,可以加速很多。

分支預測(branch prediction)