gpt4 book ai didi

scala - 为什么 scalac 不优化简单的 `for` 构造中的开销?

转载 作者:行者123 更新时间:2023-12-03 16:53:06 25 4
gpt4 key购买 nike

这是一段代码示例,第一印象看起来像 scalac。可以很容易地优化掉:

val t0 = System.nanoTime()
for (i <- 0 to 1000000000) {}
val t1 = System.nanoTime()
var i = 0
while (i < 1000000000) i += 1
val t2 = System.nanoTime()

println((t1 - t0).toDouble / (t2 - t1).toDouble)

以上代码打印76.30068413477652 ,并且随着迭代次数的增加,该比率似乎变得更糟。

有什么特别的原因吗scalac选择优化for (i <- L to/until H)转换成任何字节码形式javacfor (int i = L; i < H; i += 1) 生成?可能是因为 Scala 选择保持简单并希望开发人员简单地求助于性能更高的形式,例如 while当需要原始循环速度时循环?如果是,考虑到如此简单的 for 循环的频率,为什么这样好?

最佳答案

Scala 中的 for-comprehensions 性能目前是一个长期存在的争论。

请参阅以下链接:

TL,DR:Scala 团队决定专注于更通用的优化,而不是那些必须支持某些特定类和边缘情况(在本例中为:Range)的优化。

关于scala - 为什么 scalac 不优化简单的 `for` 构造中的开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18960069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com