分支预测:分支顺序与 builtin_expect

Branch Prediction: Branch Order vs builtin_expect

我正在学习 C++ 中的分支预测并且有一个相当简单的问题。

似乎 __builtin_expect 术语告诉编译器将哪个子句放在汇编代码的前面。

但是,如果这是由程序员手动添加的,它与简单地切换 if/else 子句有什么不同 C++代码?

允许编译器的优化器重新排序分支。如果编译器得到(或可能)出错,__builtin_expect 很有用。