コーディングレベルの速度の最適化というものは、システム全体のバランスと いう観点からは必ずしも重要度の高いものとはいえません。 長い目で見た場合、速度よりも信頼性や拡張性、保守性の方が重要だからです。 過度の最適化は可読性と相反する要素も多く、さらに設計の範囲を狭めてしま うことすらあります。 それにもかかわらず得られる速度は些細であることが多いのです。 しかしこのレベルの最適化を無視してよいのかというとそうではありません。 議論を進める前に具体的な例を見てみましょう。 以下の表はjavac -Oによりコンパイルしたプログラムをjavap -cにより逆アセ ンブルしたものです。 アセンブラのコメントは筆者が補っています。 Javaソースとコンパイル結果(JDK 1.1.3) Java アセンブラ 0 iconst_0 // [stack] = 0 1 istore_2 // i = [st