R&D/OS

likely unlikely

sunshout 2014. 6. 25. 15:01

Kernel 소스코드를 보면 likely, unlikely  라는 메크로를 자주 사용한다.

이에 대한 설명이다.


likely(), unlikely() 는 include/linux/compiler.h 에 정의된 macro 이다. 


이것의 용도는 컴파일러에게 branch 예측을 도와 주는 용도로 사용이된다. 

즉, 대부분 0으로 예측이 된다면 unlikely(x) 의 형태로 쓰고, 1로 예상되는 값을 likely(x) 로 쓴다.

예측을 도와 줌으로써 성능의 향상을 볼 수 있도록 하는 것이다.


#define likely(x)       __builtin_expect(!!(x), 1)

#define unlikely(x)     __builtin_expect(!!(x), 0)


http://kernelnewbies.org/FAQ/LikelyUnlikely