필자는지도와 평면 맵을 사용하여 모나드 유형과 통합하는 방법과 이해를 위해 스칼라의 힘을 좋아합니다. 그러나, 나는 또한 중요한 속도 위반없이 단순한 정수 루프를하고 싶다. 스칼라가 비슷한 런타임 성능으로 실행되거나 유사한 바이트 코드로 컴파일되는 논리적으로 동일한 루프 두 개가없는 이유는 무엇입니까?왜 스칼라 for 루프는 논리적으로 동일한 while 루프보다 느립니다?
// 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
}
물건 속도를 scalaxy/loops를 사용할 수있는'-optimize', 당신은하지 않습니다? –
@KevinWright :'-optimize' 옵션이 실제로하는 일에 대한 설명을 찾는 데 어려움을 겪고 있습니다. 효과에 대한 설명에 대한 포인터가 있습니까? –
@RandallSchulz 버전마다 다르지만 가능성에 대한 좋은 아이디어를 얻으실 수 있습니다. http://magarciaepfl.github.io/scala/ –