[[likely]] / [[unlikely]]

Yongs12 ㅣ 2025. 4. 17. 21:21

C++20부터 도입된 속성으로 if / else 에서 어느 쪽 분기가 자주 실행될지 컴파일러에게 힌트를 주어

CPU의 분기 예측 성능을 개선하여 성능을 높힌다.

단 컴파일러가 반드시 적용하진 않고 실제 성능 개선은 상황에 따라 다르다.

 

예시

#include <iostream>

int Func(int value)
{
    if ( value > 0) [[likely]] 
    {
        // 대다수의 케이스는 여기로 진입
        return value * 2;
    }
    else [[unlikely]] 
    {
        // 예외적 케이스
        std::cerr << "예외 값: " << value << '\n';
        return 0;
    }
}

int main()
{
    for (int v : {10, 20, -1, 30, 0}) 
    {
        std::cerr << Func(v) << '\n';
    }

    return 0;
}

 

 

주의 사항

잘못된 힌트는 오히려 분기 예측 성능을 떨어뜨릴 수 있다.

 

 

'C, C++' 카테고리의 다른 글

consteval  (0) 2025.04.10
[[nodiscard]]  (0) 2025.02.12
[[maybe_unused]]  (0) 2025.01.31
[[noreturn]]  (0) 2025.01.27
[[deprecated]]  (0) 2025.01.26