Использование вероятного / маловероятного в качестве аргумента возврата в ядре Linux - PullRequest
7 голосов
/ 11 марта 2011

Просто посмотрите на эту конструкцию в ядре Linux, и я не могу понять, что это значит.

110         return unlikely(sl->sequence != start);

Я знаю, что likely / unlikely сделаны с описанной функцией __builtin_expectздесь: http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

Вы можете использовать __builtin_expect, чтобы предоставить компилятору информацию о предсказании перехода.

Но какие подсказки предсказания ветвления возможны для безусловного ветвления ??

Ответы [ 2 ]

11 голосов
/ 11 марта 2011

Просто угадайте здесь, но представьте, что функция встроена компилятором, и у вас есть это в коде вызова:

if (functionUsingUnlikelyForReturn()) {
   // Do something
} else {
   // Do something different
}

тогда вполне разумно для предсказания ветвленияпринять к сведению подсказку.

4 голосов
/ 11 марта 2011

«Вероятность» не дает вероятности возврата из функции, а скорее является ожидаемым значением для возвращаемого значения.Я предполагаю, что функция является встроенной, так что это подсказка для оптимизации вызывающей функции.

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