まえがき

O'Reilly Mediaに本書の執筆を依頼された時、筆者は少し不安になりました。自分はそもそもJavaのパフォーマンスについて何かしているのだろうかと思ったのでした。確かに、筆者はJava(あるいはその他)のアプリケーションのパフォーマンスについて日常的に取り組んでいます。しかし、アルゴリズム上の非効率性や外部のシステムのボトルネックへの対処ばかりで、Javaのチューニングに直接関係する作業はあまり行っていません。

しばらく後に、筆者は(いつものように)自分にうそをついていたのだと納得しました。エンドツーエンドのシステムでのパフォーマンスチューニングは筆者の仕事の多くを占めており、O(log N)にできるにもかかわらずO(n2)のアルゴリズムが使われているようなコードに出くわすこともあります。しかし筆者は確かに、ガベージコレクターのパフォーマンスやJITコンパイラのパフォーマンス、Java EEのAPIから最善のパフォーマンスを引き出す方法などについて毎日考えています。

ただし、15年以上にわたって続けられてきたJavaとJVMのパフォーマンスの改善に向けた努力を否定するつもりはありません。1990年代の終わりに筆者がSunでJavaエバンジェリストを務めていた頃、ベンチマークと呼べるものはPendragon softwareのCaffeineMark 2.0だけでした。さまざまな理由があって、このベンチマークの価値にはすぐに限界が見えてきました。しかし当時は、Java 1.1.8のパフォーマンスはJava 1.0より8倍速いということがいたるところで語られていました。これは真実です。Java 1.0は完全にインタプリタ型でしたが、Java 1.1.8にはJIT(ジャストインタイム)コンパイラが含まれていたからです。 ...

Get Javaパフォーマンス now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.