Godot Source Code Note 2
2023-06-26 16:30 作者:中專(zhuān)人 | 我要投稿
宏函數(shù)likely(x)和unlikely(x)
先貼一段Godot中的代碼:
GCC編譯器可以對(duì)__GUNC__宏進(jìn)行條件編譯,啟用unlikely(x)和likely(x)宏函數(shù)。
背景知識(shí):現(xiàn)代CPU流水線(xiàn)中為加快指令運(yùn)行,一般存在分支預(yù)測(cè)機(jī)制。代碼中某些分支是經(jīng)常發(fā)生或很少發(fā)生的,編譯器與CPU對(duì)此并不知曉,因此需要程序員顯示告知以輔助CPU或編譯器更好地分支預(yù)測(cè),減少分支預(yù)測(cè)失敗帶來(lái)的懲罰。
likely與unlikely的使用:
在條件分支的判斷表達(dá)式中使用,likely(x)代表此分支更易被執(zhí)行,unlikely(x)代表此分支不易被執(zhí)行。
此處的unlikely(!disconnected)說(shuō)明!disconnected條件很少成立,即大多數(shù)情況下disconnected都是true。
C++20中正式將likely和unlikely確定為關(guān)鍵字。
如侵刪。
歡迎評(píng)論指正。
標(biāo)簽: