Avatar ·

Cuándo usar funciones inline en Kotlin y cómo afectan al rendimiento

¡Hola a todos! Recientemente empecé a estudiar Kotlin y me topé con algo llamado funciones inline. En la documentación dice que ayudan a evitar la sobrecarga de crear objetos lambda, pero no entiendo del todo cuándo realmente debería usarlas. Por ejemplo, tengo una función de orden superior simple: ```kotlin fun measureTime(action: () -> Unit) { val start = System.currentTimeMillis() action() val end = System.currentTimeMillis() println("Time: ${end - start} ms") } ``` La llamo así: ```kotlin measureTime { Thread.sleep(100) println("Hello") } ``` Todo funciona, pero leí que sin `inline` se crea un nuevo objeto para la lambda cada vez. ¿Es realmente un problema? ¿Cuándo se vuelve crítico? También vi ejemplos con `reified` (tipos reificados) — al parecer solo se pueden usar con inline. ¿Es cierto? ¿Y cómo se relaciona con el rendimiento? ¿Pueden explicarlo de forma sencilla: en qué casos debería escribir `inline` y cuándo no?