我喜欢Scala的理解力以及它们与任何带有地图和flatMap的monadic类型的整合方式。但是,我也想做简单的整数循环,而不会造成主要的速度损失。为什么Scala没有以下两个逻辑上相同的循环运行时具有相似的运行时性能,甚至编译成相似的字节码?为什么Scala for循环比逻辑上的循环慢?
// This is slow...
for (i <- 0 until n) println(s"for loop with $i")
// This runs much faster. It runs roughly at the same speed as Java code doing an identical while or for loop.
var i = 0;
while (i < n) {
println(s"while loop with $i")
i += 1
}
确认一下...你*的*与编译'-optimize',不是吗? –
@KevinWright:我很难找到'-optimize'选项实际所做的任何描述。你有没有指向任何描述其效果的指针? –
@RandallSchulz它随着版本的不同而不同,但您可以在这里得到一个公平的想法:http://magarciaepfl.github.io/scala/ –