Хотя в некоторых ситуациях было бы очень удобно использовать встроенные функции,
Есть ли недостатки с встроенными функциями?
Заключение
По-видимому, нет ничего плохого в использовании встроенных функций.
Но стоит отметить следующие моменты!
-
Чрезмерное использование встраивания может фактически замедлить работу программ. В зависимости от размера функции вложение может привести к увеличению или уменьшению размера кода. Вложение очень маленькой функции доступа обычно уменьшает размер кода, в то время как вложение очень большой функции может значительно увеличить размер кода. На современных процессорах меньший код обычно работает быстрее из-за лучшего использования кэша команд. - Руководство Google
-
Преимущества скорости встроенных функций, как правило, уменьшаются по мере увеличения размера функции. В какой-то момент накладные расходы на вызов функции становятся малыми по сравнению с исполнением тела функции, а преимущество теряется - Источник
-
Существует несколько ситуаций, когда встроенная функция может не работать:
- Для функции, возвращающей значения; если существует оператор return.
- Для функции, не возвращающей никаких значений; если существует оператор loop, switch или goto.
- Если функция рекурсивна. - Источник
-
Ключевое слово
__inline
заставляет функцию быть встроенной, только если вы указываете опцию оптимизации. Если задана оптимизация, выполняется ли выполнение__inline
, зависит от настройки параметра встроенного оптимизатора. По умолчанию встроенная опция действует всякий раз, когда запускается оптимизатор. Если вы укажете оптимизацию, вы также должны указать параметр noinline, если хотите, чтобы ключевое слово__inline
игнорировалось. - Источник