>If you convert branches into straight jumps, then branch prediction cannot be wrong anymore. Thus improvement.
It's more like: No degradation. And there might be performance degradation by the additional memory use.
It's more like: No degradation. And there might be performance degradation by the additional memory use.
int eight(int a) { int b; if (a) { b = 1; } else { b = a; } b += 3; if (a) { return b + b; } else { return b + 5; } }
you duplicate the "b += 3;" but both branches can be optimized afterwards. In fact, the function always returns 8.
A branch predictor can be wrong. A simple jump is like the branch predictor is always right. Thus, the code might run faster.