Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
优化编译器的ior。函数内联非常常见。将循环放在函数中肯定是一个更好的选择。但是如果你不被允许这样做,你还会选择第二个吗?为什么它更好呢?给CPU的分支预测器带来更少的负载。这可能对内联不好,尽管这可能对内联不好 foo->bar |= x; for_C_Performance - Fatal编程技术网

优化编译器的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);
}