The slow part is that declaredMemberProperties - t...
# announcements
o
The slow part is that declaredMemberProperties - takes a second - and there is only 4 props on my Class...
c
takes around 10-12 ms in REPL on my machine.
g
300+ ms on my machine
Copy code
import kotlin.reflect.full.declaredMemberProperties
import kotlin.system.measureTimeMillis

fun main(args: Array<String>) {
    val target = MyTest()
    val time = measureTimeMillis {
        println(target::class.declaredMemberProperties)
    }
    println("time = $time")
}


class MyTest {
    val foo = "String"
    fun bar() = Unit
}
This code
I suppose this is classloader
c
@gildor run it second time it will take much less
g
yes
even for different class
so it’s classloader
Copy code
import kotlin.reflect.full.declaredMemberProperties
import kotlin.system.measureTimeMillis

fun main(args: Array<String>) {
    val target = MyTest()
    val target2 = MyTest2()
    println(target::class.declaredMemberProperties)
    val time = measureTimeMillis {
        println(target2::class.declaredMemberProperties)
    }
    println("time = $time") //time = 13
}

class MyTest(val foo: String = "String")
class MyTest2(val bar: String = "String")
c
Even if you change the original class it still runs in 10-13 ms
first time is REPL init I think
Copy code
import java.math.BigDecimal
import kotlin.reflect.full.declaredMemberProperties

class MyTest(val b: Int = 1, val c: List<String> = listOf(), val d: BigDecimal = BigDecimal.ZERO)
val target = MyTest()
val time = System.currentTimeMillis()
val p = target::class.declaredMemberProperties
println("// time = ${System.currentTimeMillis() - time}")
// time = 12

import java.math.BigDecimal
import kotlin.reflect.full.declaredMemberProperties

class BlueMoon
val target = BlueMoon()
val time = System.currentTimeMillis()
val p = target::class.declaredMemberProperties
println("// time = ${System.currentTimeMillis() - time}")
// time = 13
g
I suppose it’s because REPL loads kotlin-reflect classes on start
175 ms for me on kotlinc