iterator()か・・・

最近すっかりJava屋なワタシ。



今日悩んでいた問題は単純なプログラムなのに異常に処理が遅いということです。



いろいろと調査をしたところ次のようにindexを指定して要素を取り出すプログラムは Vectorのサイズが大きくなると異様に遅いということをハッケンしました。



Vector v;

....
for(int i=0 ; i<v.size() ; ++i){
Object hoge = v.elementAt(i);
...
}


これを機会にVectorのドキュメントマニュアル読み直しましたところ、こういう場合は黙って iteratorを使うのがよいようです。劇的に早くなりました。


また、サイズの概算があらかじめわかっているのなら、Vectorのコンストラクタであらかじめサイズを指定してやるとよいような気もします。(未確認)



Vectorのリスト管理がどのようなデータ構造でなされているのが知りませんが、こういうTIPSは知っててソンはないでしょう。なんでもVMのせいにすればいいってもんじゃないという見本?


Posted by issei

カテゴリ: 雑記