以下代码预计执行多次
m_bool = true; //member variable
执行上述代码后,m_bool
将始终保持true
。
如果使用以下代码,就执行时间而言会更有效吗?
if (!m_bool)
m_bool = true;
答案 0 :(得分:2)
如果多次完成呼叫,if
将变为无缝,因为分支预测器将会知道该模式。
生成的程序集在很大程度上变得无关紧要,因为jmp
会在到达时被跳过。
如果编译器支持它,你甚至可以使用内在函数(例如__builtin_expect
)来提供条件最有可能的额外提示。