CPU /编译器分支预测

时间:2016-09-21 08:03:19

标签: c compiler-optimization cpu-architecture

在时间紧迫的过程中,我尝试避免引入分支,但有时候没有实用的方法。

在这些情况下,测试特定条件的不同方法之间是否存在性能差异?建议测试最可能的结果,还是没有区别?即有没有不同的重量'在CPU或编译器体系结构中的TRUE和FALSE条件之间?

E.g。以下三个片段之间通常会有区别:

// snippet 1: test for exception first
if ( !likely_to_happen ) {
  foo();
} else {
  bar();
}

// snippet 2: test for most common cases first
if ( likely_to_happen ) {
  bar();
} else {
  foo();
}

// snippet 3: test for exception in an alternative way
if ( not_likely_to_happen) {
  foo();
} else {
  bar();
}

0 个答案:

没有答案