malloc관련 문서나 커널 문서에 가면 많이 보이는 이 함수들은 기능이 결과적으로 보면 비슷하다. 다 if문을 좀 더 효율적으로 동작시키기 위한 장치이다.
기본적으로 __builtin_expect는 __builtin_expect(조건식, 예상되는 값)이렇게 사용하는데 보통 if문의 조건식에 저 __builtin_expect함수를 넣어준다. 이 함수의 장점은 단순 if문보다 실행속도가 빨라진다는 것이다.
여기서 볼 수 있듯이 어셈블리어차원에서 보면 더 잘 일어날 것같은 내용을 순서상 위에 배치시켜 프로그램의 실행속도를 높여준다.
#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 |