2026-09-09
很多人写代码的时候喜欢给分支加上likely和unlikely,觉得这样能加速。虽然理论上确实是这样,但是实际生成的汇编代码里面并不会有likely/unlikely这种东西。
历史上英特尔曾经在奔腾4的机器码里面推出过branch hint prefix,起到类似like/unlikely的功能,但是效果不好,后续好像直接被放弃了。GCC生成代码的时候根本不会生成这个hint。likely、unlikely起到的优化大部分时候体现在重排basic block顺序上面。运行时的话几乎全靠动态的分支预测器。
