프로그래밍 언어/C/C++

__builtin_expect 키워드

소혼 2010. 9. 10. 22:14
반응형
최근 이상한 매크로를 발견하고 추적하던 중 멋진 gcc의 키워드를 발견했다.

__builtin_expect라는 키워드이다.
아래 URL에 좀 더 자세히 적혀있다.


한마디로 말하면 실행할 가능성이 높은 애를 위해서 컴파일하도록 하는 매크로이다.

방어적 코딩을 하다보면 무수히 많은 if 문을 넣어야 하는데 아키텍처를 조금이라도 공부한 사람들은 Pipeline Hazard때문에 if문을 꺼리게 된다.
if문의 해악을 없앨순 없지만 되도록 실행가능성이 높은 코드를 밑에 배치해 파이프라인 해저드를 최소화 시킬수 있도록 해주는 키워드가 바로 이 키워드이다.

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

위처럼 unlikely 키워드를 사용하면 좀 편하다. (위 URL에서 발췌)
if (__builtin_expect(조건문, 0))
과 같이 쓴다.
0이라고 적으면 if문이 false일거라고 가정하고 코드를 배치한다.

이것의 성능을 측정한 자료.
http://blog.man7.org/2012/10/how-much-do-builtinexpect-likely-and.html


반응형

'프로그래밍 언어 > C/C++' 카테고리의 다른 글

[C언어] a - b < 0 vs. a < b  (0) 2010.10.25
C로 수행시간 체크하기  (0) 2010.09.30
gcc 업그레이드 (4.5.0)  (0) 2010.07.21
Header안에 static 변수  (0) 2010.02.21
디버깅하는 법 - 툴 - ltrace  (0) 2010.02.18