Ответ
Inline-функции в Kotlin разворачиваются во время компиляции, что устраняет накладные расходы на вызов функции. Однако есть ограничения:
-
Размер кода: Каждый вызов inline-функции заменяется её телом, что увеличивает размер билда. Если функция большая или вызывается часто, это может негативно сказаться на производительности.
-
Ограничения: В inline-функциях нельзя использовать нелокальные return (кроме лямбд с
crossinline), и они не могут быть рекурсивными. -
Лямбды: Inline эффективен для функций с лямбда-параметрами, так как избегает создания анонимных классов. Но если лямбда передаётся в другую не-inline функцию, преимущество теряется.
Пример:
inline fun measureTime(block: () -> Unit) {
val start = System.currentTimeMillis()
block()
println("Time: ${System.currentTimeMillis() - start}ms")
}