Осуществление переупорядочения филиалов в GCC - PullRequest
3 голосов
/ 26 февраля 2012

Изменение порядка ветвей - это оптимизация профиля.GCC поддерживает это?Если да, где / как на самом деле реализовано зондирование / контрольно-измерительные приборы?

Я вижу, что ядро ​​Linux имеет трассировщик "профилирования веток" с 2 уровнями: вероятный / маловероятный и "все конструкции if ()"?Как ядро ​​полагается на GCC для реализации этих двух вариантов?Как осуществляется зондирование / профилирование и как данные считываются ядром?

1 Ответ

2 голосов
/ 26 февраля 2012

По умолчанию, GCC предпочитает первую часть if (он действует так, как будто if будет успешным, а остальное - неудачным), но вы можете использовать __ builtin_expect для принудительного прогнозирования ветвления.

...