更好地声明具有生成值的常数

时间:2018-09-18 12:01:31

标签: android performance kotlin lazy-evaluation

在Kotlin中哪种声明会更好,为什么?

Key始终是相同的值

private val key: ByteArray by lazy {
    byteArrayOf(some static bytes)
}

private val key = byteArrayOf(some static bytes)

1 个答案:

答案 0 :(得分:3)

如果静态字节相同,则添加懒惰的委托不会给您带来任何好处。如果要计算的值需要一定的计算量(时间和/或空间),或者在某些情况下可能不需要,则惰性是有用的。因此,您只想在真正需要时进行初始化,而不是每次都进行初始化。

实际上,如果您确实每次都需要它,那么添加懒惰的委托只会增加开销。我会做最简单的事情,只有在发现懒惰的代表可以通过基准测试或测试帮助的情况下,才去参加。

TLDR:坚持直接初始化数组,除非您每次都不需要它并且需要大量资源来创建。