我有一个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