我有一個switch
語句在一些時間關鍵的代碼。我試圖用__builtin_expect
來優化它,但它似乎沒有工作。我想知道是否有人可以告訴我,如果我錯過了一些細節,或者如果編譯器沒有爲它優化。我已經試過我的主機上執行以下操作:你可以使用switch語句的builtin_expect
int main() {
volatile int v=0;
long i = 0;
for (i=0; i<1000000000L; i++) {
switch(__builtin_expect(v, EXPT)) {
case 7:
v=7;
break;
default:
v=7;
break;
}
}
return v;
}
然後我編譯和運行如下:
~/code/builtinexpect> gcc bie.c -o bie -D EXPT=0 && time ./bie
real 0m2.092s
user 0m2.086s
sys 0m0.000s
~/code/builtinexpect> gcc bie.c -o bie -D EXPT=7 && time ./bie
real 0m2.092s
user 0m2.086s
sys 0m0.000s
我使用GCC 4.5.1版。
在兩種情況下,生成的彙編代碼如何顯示? – Leeor