El performance de Kotlin de la interfaz frente a la invocación de funciones

En Kotlin, como podemos usar funciones como variables, tiendo a replace interfaces con llamadas a funciones como esta:

class A { private var listener: AA? = null var callThis: (() -> Unit) ? = null) fun somethingHere() { callThis?.invoke() listener?.callThis2() } fun attachListener(listener: AA) { this.listener = listener } interface AA { fun callThis2() } } class B { init { val objectA = A() objectA.callThis = {} objectA.attachListener(object : A.AA { override fun callThis2() { } }) } } 

Como soy bastante nuevo en Kotlin, me gustaría saber las diferencias y en qué escenarios debería usar llamadas de function vs interfaces, a exception de la abstracción (obviamente). ¿O es lo mismo y la llamada de function hace exactamente lo mismo que las classs internas anónimas?

La function se llama muchas veces, cada 100 s precisamente, y me gustaría saber, en términos de performance, cuál es mejor

Una lambda en Kotlin se comstack en una class interna anónima. Por lo tanto, el performance de los dos escenarios será exactamente el mismo.