メソッドにfinalをつけると高速化されるわけ

メソッドにfinalをつけると高速化される理由はコンパイル時の最適化でメソッドのインライン化が実施され、メソッドコールのオーバヘッドが少なくなるため。その代わり作成されるクラスファイルサイズは大きくなる。


通常は、コンパイルオプション "-o"をつけるとインライン化が有効となる。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/tooldocs/solaris/javac.html


ただし、eclipseコンパイラのデフォルトではインライン化が有効にされているため
eclipseで開発してパフォーマンス測定した後にantとかでリリースビルドをコンパイルしてパフォーマンス測定した場合とではパフォーマンスが異なる可能性があることに留意する必要がある。


※これらはJava1.4のバージョンに関しての内容となります。

※Java5.0以降のコンパイルでは"-g"のオプションがつけられていない場合は"-o"がデフォルトでつけられます。


※メソッドインライン化は作成されるクラスファイルが肥大化する。つまりJITがネイティブコードにコンパイルする適用範囲は拡大するため、JITコンパイル時間が増大し、それは環境・ロジックによってはメソッドコールのオーバーヘッドよりも負荷がかかる可能性がある。


そこで通常コンパイルでインライン化しやすいような最小限の変換かもしくは置き換え場所のマーキングだけを行いHotSpotコンパイル時にネイティブコードのインライン化を高速に実施することより高速化が見込めるということをやっている?もしくはやったらいいと思う。場合によると思うけども。