我是否理解这一点,if
语句更依赖于分支预测,而v-table查找更依赖于分支目标预测?关于v表,没有“分支预测”,只有目标预测?
试图理解CPU如何处理v表。
答案 0 :(得分:8)
分支预测是预测分支是否采取。分支目标预测是分支所在的预测 。这两件事是独立的,可以在所有组合中出现。
这些例子可能是:
goto
声明break
或continue
声明if/else
语句的'then'子句结束(跳过else
子句)switch
语句(如果编译成跳转表)if
声明switch
语句(如果编译成一系列if/else
语句)&&
和||
运营商?:
运算符if (condition) { obj->VirtualFunctionCall(); }
这样的代码优化为条件间接跳转,如jne *%eax
,如果由于尾调用优化而出现在函数末尾。