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