Хочу добавить, что у меня есть математическая библиотека SIMD, в которой встраивание абсолютно необходимо для производительности.Первоначально я установил все функции как встроенные, но разборка показала, что даже для самых тривиальных операторов будет принято решение вызвать функцию.И MSVC, и Clang показали это со всеми включенными флагами оптимизации.
Я сделал так, как предлагалось в других публикациях в SO, и добавил __forceinline
для MSVC и __attribute__((always_inline))
для всех других компиляторов.Наблюдается постоянное улучшение производительности на 25-35% в различных узких циклах с операциями в диапазоне от базовых умножений до синусов.
Я не понял, почему им было так трудно встроить (возможно, шаблонный код сложнее?) но суть в том, что есть очень допустимые варианты использования для встраивания вручную и огромные ускорения.
Если вам интересно, это то, где я реализовал это.https://github.com/redorav/hlslpp