假如 predicate 的概率是未知的,抑或 predicate 只会被设置一次,那么下面那种写法的性能更好呢?
Branch prediction
1
2
3
4
5
6void dispatch() {
if (predicate)
logicA();
else
logicB();
}Branch target prediction
1
2
3
4
5
6
7
8
9
10fp = nullptr;
void set_fp() {
if (predicate)
fp = logicA;
else
fp = logicB;
}
void dispatch() {
fp();
}