Ответ
Плюсы:
- Уменьшают overhead вызова функции (нет создания stack frame)
- Улучшают производительность за счет встраивания кода в месте вызова
- Полезны для небольших часто используемых функций
Минусы:
- Увеличивают размер бинарника (код дублируется в каждом месте вызова)
- Могут ухудшить производительность кэша процессора
- Не всегда работают (компилятор может проигнорировать
inline)
Пример:
inline fun measureTime(block: () -> Unit) {
val start = System.currentTimeMillis()
block()
println("Time: ${System.currentTimeMillis() - start}ms")
}