VM を Scala で書いてて得た知見。(再検証せずに書いてますので間違ってたら教えてください)
for (i <- 0 until 100) { ... }
より
var i = 0 while (i < 100) { ...; i += 1 }
の方がとっても速い。
for にすると for の中身が (Java レベルの) 別クラスになるため、かなり遅いみたい。
object Main { val v1 = ... def foo { foo(i <- 0 until 100) { v1 を使う } } }
みたいなの書くと、v1 の参照が別クラスのメソッド呼び出しになるようで、そのせいかわからないけれど相当遅かった。while にすれば同じクラスのメソッド呼び出しになるため、インライン展開されるのか多少マシになった。しょんぼり。速く最適化されろー。