Есть ли у GCC обычный «вероятный» путь? - PullRequest
0 голосов
/ 27 ноября 2018

Вы можете намекнуть, дать подсказки GCC о вероятности того или иного ветвления, используя __builtin_expect.Без этого есть ли какие-либо предположения по умолчанию.То есть код будет

if(error) { /*unlikely path*/ return FAILURE;}
return SUCCESS;

работать лучше / хуже, чем

if(!error) {/*likely path*/ return SUCCESS;}
return FAILURE;

1 Ответ

0 голосов
/ 27 ноября 2018

Как и любой современный компилятор, gcc также будет выполнять анализ кода.Если анализ кода дает какую-либо полезную / доказуемую информацию, он выбирает некоторую оптимизацию (см. Переупорядочение базовых блоков).gcc по крайней мере выполнит статический анализ кода, в то время как clang (возможно, с использованием расширений) также проанализирует график потока выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...