Kotlin’直到’创建IntRange垃圾的乐趣
我正在使用until
缀乐趣为我的循环下面
for (x in 0 until bodies.size) bodies[x]()
当用YourKit分析我的代码时,我注意到我有大量的IntRange对象(约2k /秒)。
当我切换循环使用int...int
rangeTo直接它不会创建任何垃圾。
for (x in 0..bodies.size-1) bodies[x]()
有人可以解释这两者之间的区别吗? 从我可以告诉Int.until
简单地返回this .. to
public infix fun Int.until(to: Int): IntRange { val to_ = (to.toLong() - 1).toInt() if (to_ > to) throw IllegalArgumentException("The to argument value '$to' was too small.") return this .. to_ }
在当前版本v1.0.4中,编译器优化了rangeTo
和downTo
函数的调用,因为它们是for
循环中最常见的。
我想他们会尽快进行优化。
这是相关的问题单: https : //youtrack.jetbrains.com/issue/KT-9900 。 随意投票。