Вопрос

__builtin_expect От GCC может использоваться программистом, чтобы показать, какие варианты должны быть очень часто, а какие редки. Но __builtin_expect иметь только «истинность» и «ложь» (вероятность 0% или 100%)

Для некоторых крупных проектов трудно получить обратную связь профиля (-fprofile-arcs), а иногда и программист знает, какую вероятность того, что он имеет в какой -то момент программы.

Компилятор можно дать намек на то, что ветвь имеет вероятность> 0% и <100%?

Это было полезно?

Решение

Правда и ложь действительно означают, что «первый вариант более вероятен» и «второй вариант более вероятен». Там нет практической потребности в каких -либо ценностях, кроме этих. Компилятор не сможет использовать эту информацию.

Другие советы

Из здесь:

длинная __builtin_expect_with_probability

(длинная эксплуат, длинная в, двойной вероятность) Функция имеет ту же семантику, что и __builtin_expect, но вызывающий вызывание обеспечивает ожидаемую вероятность, что exp == c. Анкет Последний аргумент вероятность является плавающей стоимостью в инклюзивном диапазоне 0,0F и 1,0F.

Недотерминизм не является желательной чертой для вывода компилятора, не говоря уже о языковых характеристиках. Нет реальной выгоды только частичной оптимизации, предпочитая одну ветвь, и ни один компилятор, о котором я знаю, не может сделать это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top