优化编译器的ior。函数内联非常常见。将循环放在函数中肯定是一个更好的选择。但是如果你不被允许这样做,你还会选择第二个吗?为什么它更好呢?给CPU的分支预测器带来更少的负载。这可能对内联不好,尽管这可能对内联不好 foo->bar |= x; for
优化编译器的ior。函数内联非常常见。将循环放在函数中肯定是一个更好的选择。但是如果你不被允许这样做,你还会选择第二个吗?为什么它更好呢?给CPU的分支预测器带来更少的负载。这可能对内联不好,尽管这可能对内联不好 foo->bar |= x; for,c,performance,C,Performance,优化编译器的ior。函数内联非常常见。将循环放在函数中肯定是一个更好的选择。但是如果你不被允许这样做,你还会选择第二个吗?为什么它更好呢?给CPU的分支预测器带来更少的负载。这可能对内联不好,尽管这可能对内联不好 foo->bar |= x; for(i=0; i<n; i++) { if (foo->bar & SOMETHING) doOnething(i); else if (foo->bar & SOMETHIN
优化编译器的ior。函数内联非常常见。将循环放在函数中肯定是一个更好的选择。但是如果你不被允许这样做,你还会选择第二个吗?为什么它更好呢?给CPU的分支预测器带来更少的负载。这可能对内联不好,尽管这可能对内联不好
foo->bar |= x;
for(i=0; i<n; i++)
{
if (foo->bar & SOMETHING)
doOnething(i);
else if (foo->bar & SOMETHINGELSE)
doSecondthing(i);
else
doAnotherThing(i);
}
foo->bar |= x;
if (foo->bar & SOMETHING) {
for(i=0; i<n; i++) {
doOneThing(i);
}
}
else if (foo->bar & SOMETHINGELSE) {
for(i=0; i<n; i++) {
doSecondThing(i);
}
}
else {
for(i=0; i<n; i++) {
doAnotherThing(i);
}
}
foo->bar |= x;
if (foo->bar & SOMETHING) {
doOneThing(n); // loops inside so no excessive function overhead
}
else if (foo->bar & SOMETHINGELSE) {
doSecondThing(n);
}
else {
doAnotherThing(n);
}
void (*fp)(int);
foo->bar |= x;
if (foo->bar & SOMETHING)
fp = doOnething;
else (foo->bar & SOMETHINGELSE)
fp = doSecondthing;
else
fp = doAnotherThing;
for(i=0; i<n; i++) {
fp(i);
}