로 알려진 매크로 likely
및 unlikely
매크로를 사용하면 컴파일러에서 if
일반적으로 입력 여부를 알 수 있습니다. 이를 사용하면 성능이 약간 향상됩니다.
최근에 사용하기 시작했으며 그러한 힌트를 얼마나 자주 사용해야하는지 잘 모르겠습니다. 현재 오류 검사와 함께 사용하며 if
일반적으로로 표시됩니다 unlikely
. 예를 들면 다음과 같습니다.
mem = malloc(size);
if (unlikely(mem == NULL))
goto exit_no_mem;
괜찮아 보이지만 오류 검사는 if
자주 발생하며 결과적으로 상기 매크로를 사용합니다.
내 질문은이 너무 많이입니다 likely
및 unlikely
모든 오류 검사에 매크로 if
?
우리가 그것에있는 동안, 그들은 어떤 다른 장소를 자주 사용합니까?
현재 사용중인 곳은 실시간 서브 시스템에서 추상화하는 라이브러리에 있으므로 RTAI, QNX 및 다른 사람들 사이에서 프로그램을 이식 할 수 있습니다. 즉, 대부분의 함수는 다소 작으며 하나 또는 두 개의 다른 함수를 직접 호출합니다. 많은 static inline
기능 조차도 있습니다.
우선, 그것은 내가 프로파일 할 수있는 응용 프로그램이 아닙니다. 독립 실행 형 응용 프로그램이 아니라 라이브러리이기 때문에 "병목 현상"을 식별하는 것은 의미가 없습니다.
둘째, 그것은 "이것이 가능하지 않다는 것을 알고 있습니다. 컴파일러에게도 알려줄 것입니다." 적극적으로 최적화하려고하지 않습니다 if
.
likely
와 unlikely
존재하고 그들이 무엇을 할. 언제 어디서 사용하는 것이 가장 좋은지 찾지 못했습니다.