哪个更快:my_bool = true;或者如果(!my_bool)?

时间:2013-06-08 17:41:30

标签: c++

以下代码预计执行多次

m_bool = true; //member variable

执行上述代码后,m_bool将始终保持true

如果使用以下代码,就执行时间而言会更有效吗?

if (!m_bool)
  m_bool = true;

1 个答案:

答案 0 :(得分:2)

如果多次完成呼叫,if将变为无缝,因为分支预测器将会知道该模式。

生成的程序集在很大程度上变得无关紧要,因为jmp会在到达时被跳过。

如果编译器支持它,你甚至可以使用内在函数(例如__builtin_expect)来提供条件最有可能的额外提示。