Описание тега likely-unlikely
None Вероятные и маловероятные - это намеки компилятору на выдачу инструкций, которые вызовут предсказание ветвления в пользу "вероятной" стороны инструкции перехода.
likely
а также unlikely
- это подсказки компилятору для выдачи инструкций, которые заставят предсказание ветвления отдавать предпочтение "вероятной" стороне инструкции перехода.
Компилятор GCC предоставляет __builtin_expect
, а также likely()
а также unlikely()
макросы, которые обертывают его встроенными.
Также см. Книгу Ульриха Дреппера " Что должен знать каждый программист о памяти", стр. 56 и 57, а также обсуждение статического предсказания ветвлений и пузырей в конвейере.