我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。