Godot Source Code Note 2
宏函数likely(x)和unlikely(x)
先贴一段Godot中的代码:
GCC编译器可以对__GUNC__宏进行条件编译,启用unlikely(x)和likely(x)宏函数。
背景知识:现代CPU流水线中为加快指令运行,一般存在分支预测机制。代码中某些分支是经常发生或很少发生的,编译器与CPU对此并不知晓,因此需要程序员显示告知以辅助CPU或编译器更好地分支预测,减少分支预测失败带来的惩罚。
likely与unlikely的使用:
在条件分支的判断表达式中使用,likely(x)代表此分支更易被执行,unlikely(x)代表此分支不易被执行。
此处的unlikely(!disconnected)说明!disconnected条件很少成立,即大多数情况下disconnected都是true。
C++20中正式将likely和unlikely确定为关键字。
如侵删。
欢迎评论指正。