로 알려진 매크로 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존재하고 그들이 무엇을 할. 언제 어디서 사용하는 것이 가장 좋은지 찾지 못했습니다.