天天看點

分支優化選擇——likely()、unlikely()

分支優化選擇

對于條件選擇語句,gcc内建了一條指令用于優化,在一個條件經常出現,或者該條件很少出現的時候,編譯器可以根據這條指令對條件分支選擇進行優化。核心把這條指令封裝成了宏,比如likely()和unlikely()。

使用示例:

先存在如下條件選擇語句:
if(error){
	.....
}

如果這個标記大多數為0,可以使用unlikely(error)
if(unlikely(error)){
	......
}

如果,分支條件大多數為滿足時,可以使用likely(success)
if(likely(success)){
	......
}
           

【注】在使用之前,一定要清楚是不是存在一個在絕大多數情況下都會成立的條件。如果,判斷正确,這個條件占壓倒性的優勢,性能會得到提升;如果搞錯了,性能反而會下降。