我有一些代码可以生成小数据类的大量实例。当我向该类添加一个惰性属性时,我注意到即使从未访问该惰性属性,创建该类的实例也会变得慢得多。怎么会出现这样的情况呢?我原以为如果从不访问惰性属性,那么不会有什么区别。有没有什么方法可以使用惰性属性而不遭受这种性能影响?
这是一个最小的例子:
import kotlin.system.measureTimeMillis
class LazyTest(val x: Int) {
val test: Int by lazy { 9 }
}
fun main(){
val time = measureTimeMillis { List(500_000) {LazyTest(it) }}
println("time: $time")
}
Run Code Online (Sandbox Code Playgroud)
当在 play.kotlinlang.org上运行它时,需要 500-600 毫秒,如果我注释掉val test: Int by lazy { 9 }该行,则运行大约需要 40 毫秒。
| 归档时间: |
|
| 查看次数: |
1853 次 |
| 最近记录: |