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

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

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

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

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

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам