https://kotlinlang.org logo
#reflect
Title
# reflect
c

christophsturm

12/25/2020, 12:12 PM
is there a way to speed up this code?
Copy code
object S {
    val string = "String"
}
fun main() {
    println(measureTimeMillis {
        StringProvider(S::class).getContext()
    })
}
class StringProvider(val kClass: KClass<*>) {
    fun getContext(): String {
        return kClass.declaredMemberProperties.single { it.name == "string" }.call(kClass.objectInstance) as String
    }
}
it takes 420ms on my mac
this takes just 16ms:
Copy code
fun getContext(): RootContext {
        val jClass = kClass.java
        val obj = jClass.getDeclaredField("INSTANCE").get(null)
        return jClass.getDeclaredMethod("getContext").invoke(obj) as RootContext
    }