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 |