Javaと聞くと、遅くね?と拒否反応を示す人は多いはず。就職して以降、弊社の戦略的事情から(本当だろうか)もっぱらプログラムはJavaで書いています。Javaは適当に遊んでいた程度でしたが、だいぶ慣れてきました。チューニング的な意味で。最近、大規模データや構造化データを扱うことが増えたので、ちょっと気を抜くと動かなくなります。同じインターフェースで5回くらい実装し直すのはざらです。 さて、Javaはインタプリタだから遅いと思われがちですが、本当でしょうか。最近の経験を鑑みるに、JIT最適化はかなりがんばっているという印象を受けます。経験的に(CPU実験の)、もっとも効く最適化の一つはインライン展開(とそれに伴う定数伝搬など)なんですが、そちらは実はだいぶがんばっているように思います。遅い原因は、そこではなくてメモリ馬鹿食いから来るキャッシュミスと、それに伴う速度低下が原因の用に思います。J
![2009-04-01](https://cdn-ak-scissors.b.st-hatena.com/image/square/06a15c64ba0ceec233d86d71001ebb29a9dcbf5d/height=288;version=1;width=512/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Ftheme%2Fog-image-1500.png)