Ответ
Inline-функции экономят память за счёт устранения накладных расходов на вызов функции. Вместо генерации отдельного блока кода для функции и операций call/return, компилятор подставляет тело функции прямо в место вызова.
Пример:
inline fun measureTime(block: () -> Unit) {
val start = System.currentTimeMillis()
block()
println("Time: ${System.currentTimeMillis() - start}ms")
}
// При компиляции код превратится в:
val start = System.currentTimeMillis()
println("Hello") // тело лямбды
println("Time: ${System.currentTimeMillis() - start}ms")
Особенности:
- Уменьшает количество объектов (не создаётся Function объект для лямбды)
- Улучшает производительность за счёт устранения вызова
- Может увеличить размер бинарного файла, если inline-функция вызывается многократно
- Подходит для функций с лямбда-параметрами и небольших утилитных функций