Java と JIT と Iterable と RandomAccess

タイトルがいい加減である。いまさらだが、Tiger というと generics というイメージが強かったせいで、foreach が使えるようになったことを忘れていたのだが、これが便利。便利というか、ループさせるのに変数がいるというのは正直ださい。仕組みとしては、Iterable インターフェースに iterator メソッドがあって、foreach 構文をかくといわゆる Iterator を使った for 文として解釈される寸法。

すると気になるのは、というかいろいろなところでかかれているのが、RandomAccess な Collection は iterator ループよりインデックスで get した方が速いよということらしい。C++ なら実質ただの ++ になって同等の速度だと思われるので、その辺 JIT どうなってるのよと言うのが気にかかるところ。いかんせん、未だに JIT コンパイラに信用がおけない。

続きを読む