use*_*112 9 c++ polymorphism cpu performance branch-prediction
我是否理解这一点,if语句更依赖于分支预测,而v-table查找更依赖于分支目标预测?关于v表,没有"分支预测",只有目标预测?
试图了解CPU如何处理v表.
分支预测是预测分支是否将被采用.分支目标预测是预测,其中分支打算.这两件事是独立的,可以在所有组合中出现.
这些例子可能是:
goto 声明break或continue声明if/else声明的'then'子句结束(跳过该else子句)switch 语句(如果编译成跳转表)if 声明switch声明(如果汇编成一系列if/else声明)&&与||运营商?:运算符if (condition) { obj->VirtualFunctionCall(); }为条件间接跳转,就像jne *%eax它由于尾调用优化而出现在函数末尾一样.