Я заметил, что руководство по стилю Google С++ предостерегает от включения функций с помощью циклов или операторов switch:
Еще одно полезное правило: оно обычно не экономически выгодно встроенные функции с циклами или операторами switch (если в общий случай, оператор цикла или switch никогда не выполняется).
Другие комментарии в StackOverflow подтвердили это мнение.
Почему функции с циклами или операторы switch
(или goto
s) не подходят или совместимы с inlining. Это относится к функциям, которые содержат любой тип прыжка? Это относится к функциям с операторами if
? Также (и это может быть несколько не связано), почему встраивание функций, возвращающих значение, не рекомендуется?
Меня особенно интересует этот вопрос, потому что я работаю с сегментом чувствительного к производительности кода. Я заметил, что после встраивания функции, содержащей ряд операторов if
, производительность значительно снижается. Я использую GNU Make 3,81, если это релевантно.