Что такое inline-функции в Swift?

«Что такое inline-функции в Swift?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Inline-функция — это функция, тело которой компилятор встраивает (подставляет) непосредственно в место каждого её вызова, исключая накладные расходы на вызов (сохранение/восстановление контекста, передачу управления).

Объявление: Используются атрибуты @inline(__always) для принудительного встраивания или @inline(never) для его запрета.

@inline(__always) func square(_ x: Int) -> Int {
    return x * x
}
let result = square(5) // При компиляции заменяется на: let result = 5 * 5

Плюсы:

  • Производительность: Устраняются затраты на вызов функции, что критично для часто вызываемых мелких функций (геттеры, математические операции).
  • Дополнительные оптимизации: Компилятор может лучше оптимизировать встроенный код в контексте вызывающего метода.

Минусы:

  • Увеличение размера кода: Каждая точка вызова дублирует тело функции, что может привести к "раздуванию" бинарного файла.
  • Потенциальная потеря производительности: Для больших функций увеличение размера кода может ухудшить работу кэша инструкций процессора.

Рекомендация: Предоставлять решение компилятору. Современные компиляторы (включая Swift) эффективно применяют встраивание автоматически на основе эвристик размера и частоты вызова. Используйте атрибуты @inline только для точечных, обоснованных оптимизаций после профилирования.