1. 程式人生 > >【linux 開發】likely和unlikely用法及提升效率原理

【linux 開發】likely和unlikely用法及提升效率原理

1、具體定義如下,gcc 2.96以上版本支援
#define likely(x) __biltin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)

2、效率提升原理

#define likely(x) __builtin_expect(!!(x), 1)也就是說明x==1是“經常發生的”或是“很可能發生的”,!!(x)這個操作會把 x 轉化成bool值,即0或1.。

使用likely ,執行if後面語句的可能性大些,編譯器將if{}是的內容編譯到前面, 使用unlikely ,執行else後面語句的可能性大些,編譯器將else{}裡的內容編譯到前面。這樣有利於cpu預取,提高預取指令的正確率,因而可提高效率。