Как себя ведет компилятор без использования inline

«Как себя ведет компилятор без использования inline» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Без inline компилятор генерирует отдельный объектный код для каждой точки вызова функции, что может увеличить размер бинарного файла. Также отсутствие inline может привести к накладным расходам на вызов функции (сохранение контекста, передача аргументов и т.д.), особенно если функция вызывается часто в критичных к производительности участках кода.

Пример без inline:

fun calculate(a: Int, b: Int): Int = a + b

При каждом вызове calculate будет происходить полноценный вызов функции.

Если же функция небольшая и часто вызывается, лучше использовать inline:

inline fun calculate(a: Int, b: Int): Int = a + b

Это исключит накладные расходы, встраивая код функции прямо в место вызова.