読者です 読者をやめる 読者になる 読者になる

A Clockwork …

~雑記メモ~

最適化に期待しない

私自身、学生まではC/C++でコードを書いていました。
vc++には大変お世話になりました。

今思えば、相当優秀なコンパイラでしたね。
gccとかと比較した時の違いは素晴らしかったです。

それに対して、Javaですが。
最適化はほぼされないです。

JVMにはJITが積んであります。
JITの役目は、コンパイルされたバイトコードを動作する計算機固有のバイナリに変換させることです。
この時に、計算機にそった最適なバイナリへと変換するJITもあります。

しかし、これらの最適化のために、JITは予めコンパイルされたバイトコードを解析するという必要があります。
つまり、最適化するために動作を止めて、解析を行い最適化を行うといった処理が追加で発生してしまい、
逆に遅くなってしまう場合もあります。

そのため、これらの最適化はJITにとっても難しいことだといえます。

つまり、Javaで最適化するためにはどうすればいいのかというと、もちろん私達自身で最適なコードを書くことが求められます。
それだけでなく、Javaコンパイラが最適化できるようなコードを私達が書くことも必要であるのです。

無駄な、オブジェクト作成を始めとした処理をできるだけなくし、Javaコンパイラで最適バイトコードとなるように意識して設計しましょう。

本日は以上です。