2008年6月27日金曜日

javaでパフォーマンスがどうとかこうとか

仕事上、そんなことを考える機会がよくある。
まあ、もとから何も考えてないわけではないんだけど、ちゃんと調べてみないと分からない(正確じゃない)こともあるわけで。
で、最近知った意外だったこと
  • ローカル変数の宣言でfinal付けたときパフォーマンスが悪くなることがある。(バイトコードをアレして確認した人から)
  • ArrayListが10、HashMapが16と、初期サイズが思っていたより小さかった。
finalを付けるとパフォーマンスが良くなるというのは都市伝説だとよく言われるけど、悪化するパターンもあるとは…
コンパイラ次第なとこはあると思うけど意外だったな。
コレクションの初期サイズの方は、もうちょっと大きなサイズ(64とか)かと勝手に思ってたけど、確かに普段ちょっとしたことに使うことを考えるとこんなものかも知れない。
しかし、気にせずadd/putをガンガンしてると何度もサイズ拡張することになるから、サイズの予想が付くときはちゃんと初期値を指定しないといけないと再認識。

あ、あと Integer#valueOf(int) が java5からだったのを最近知った。
Integerのインスタンスが必要なら、コンストラクタじゃなくてこっちだよね、とか思ってたら1.4で使えなくてがっかり…。
なかなか5以降の機能を実務で使うことがないなあ。

0 件のコメント: