Я просто вырву оттуда первую попавшуюся цитату"""
Например, чтобы получить некоторую интуицию проблемы с инлайном, не погружаясь сильно глубоко в сложные технические детали, давайте рассмотрим простейший синтетический код:
int get_inc_val () { return 3; };
...
int a=0;
while (a < 10000)
{
a+=get_inc_val();
}
...
Архитектура Эльбрус крайне плохо исполняет код, если в нём появляются не заинлайненные вызовы функций. В таком случае производительность может падать на порядок.
Если в данном цикле вызов функции get_int_val по какой-то причине не заинлайнится компилятором, то для RISC/CISC архитектуры с OoO итерация цикла будет занимать ~1 такт(P.S. после публикации статьи проверка на реальном коде показала 3 такта), не отличаясь принципиально от случая, если инлайн сработал.
"""
А вот первая попавшаяся релевантная цитата из IA32 Optimization Manual
Assembly/Compiler Coding Rule 5. (MH impact, MH generality) Selectively inline a function if
doing so decreases code size or if the function is small and the call site is frequently executed.
Интел пишет, что приведённая как пример функция должна быть заинлайнена. Как минимум, данный пример не годный. Моя интуиция подсказывает, что там можно ещё таких найти.