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 。 随意投票。
- UNRESOLVED_REFERENCE未解决的参考:isInitialized
- Kotlin,generics和一个可能没有任何参数的函数
- Kotlin Spring Boot使用Map创建urlencoded POST请求
- @Rule>在Kotlin Junit测试中必须是公共的ValidationError
- 如何使用KClassreflection来区分Kotlin中的类和接口
- Android Kotlin把任何东西都转换成对象
- 旧的Kotlin规范在哪里托管?
- Try-Catch Block不可达? 有一个内部try-finally块导致外部try-catch块无法访问?
- 内联setter或不在Kotlin中创建未使用的setter?