Profile

youngsouk

youngsouk

__builtin_expect, likely, unlikely

malloc관련 문서나 커널 문서에 가면 많이 보이는 이 함수들은 기능이 결과적으로 보면 비슷하다. 다 if문을 좀 더 효율적으로 동작시키기 위한 장치이다. 

기본적으로 __builtin_expect는 __builtin_expect(조건식, 예상되는 값)이렇게 사용하는데 보통 if문의 조건식에 저 __builtin_expect함수를 넣어준다. 이 함수의 장점은 단순 if문보다 실행속도가 빨라진다는 것이다.

 

https://stackoverflow.com/questions/7346929/what-is-the-advantage-of-gccs-builtin-expect-in-if-else-statements

 

What is the advantage of GCC's __builtin_expect in if else statements?

I came across a #define in which they use __builtin_expect. The documentation says: Built-in Function: long __builtin_expect (long exp, long c) You may use __builtin_expect to provide the

stackoverflow.com

여기서 볼 수 있듯이 어셈블리어차원에서 보면 더 잘 일어날 것같은 내용을 순서상 위에 배치시켜 프로그램의 실행속도를 높여준다.

#define likely(x)       __builtin_expect((x), 1)
#define unlikely(x)     __builtin_expect((x), 0)

likely함수와 unlikly함수는 저렇게 정의된다.

'힙(heap) > glibc' 카테고리의 다른 글

__libc_free함수 분석  (0) 2019.08.09
__libc_malloc함수 분석  (0) 2019.08.09
__libc_calloc 함수 분석  (0) 2019.08.09
tcache 분석  (0) 2019.08.08
힙 보안검사(지속적으로 추가 예정)  (0) 2019.08.05