Las funciones inline
en Kotlin son una característica que permite optimizar el rendimiento al evitar la sobrecarga de las llamadas a funciones mediante la sustitución del cuerpo de la función directamente en el código. Son especialmente útiles al trabajar con lambdas y funciones de orden superior.
Cuando declaras una función como inline
, el compilador reemplaza las llamadas a la función con el código de su cuerpo durante la compilación. Esto reduce el coste de las llamadas y evita la creación de objetos adicionales para las lambdas. Aunque puede aumentar el tamaño del código, mejora el rendimiento en ciertos casos.
inline fun <T> measureExecutionTime(block: () -> T): T {
val startTime = System.currentTimeMillis()
val result = block()
val endTime = System.currentTimeMillis()
println("Execution time: ${endTime - startTime} ms")
return result
}
Parámetro | Tipo | Descripción |
---|---|---|
block
|
() -> T
|
Lambda o función pasada como argumento. |
inline fun performOperation(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
fun main() {
val sum = performOperation(5, 3) { x, y -> x + y }
println("Suma: $sum")
}
En este ejemplo, la función performOperation
es reemplazada en tiempo de compilación, eliminando la sobrecarga asociada con la llamada y la creación de lambdas.
noinline
Si necesitas que un parámetro lambda no sea inline, puedes usar la palabra clave noinline
:
inline fun example(noinline block: () -> Unit) {
// block no será inlined
}
Ventajas:
Consideraciones:
Para más detalles, consulta la documentación oficial de Kotlin.
Jorge García
Fullstack developer