Предположим, что у меня есть блок компиляции, состоящий из трех функций: A, B и C. A вызывается один раз из функции, внешней по отношению к модулю компиляции (например, это точка входа или обратный вызов); B вызывается много раз A (например, он вызывается в замкнутом цикле); C вызывается один раз каждым вызовом B (например, он является библиотечной функцией).
Весь путь через A (проходящий через B и C) критичен с точки зрения производительности, хотя производительность самого A не является критичной (поскольку большинство времени проводится в B и C).
Каков минимальный набор функций, который следует аннотировать с помощью __attribute__ ((hot))
для более агрессивной оптимизации этого пути? Предположим, что мы не можем использовать -fprofile-generate
.
Эквивалентно: означает ли __attribute__ ((hot))
"оптимизировать тело этой функции", "оптимизировать вызовы для этой функции", "оптимизировать все вызовы потомков, которые выполняет эта функция", или их комбинация?
Информационная страница GCC четко не рассматривает эти вопросы.