Java講座
4.9. 初期容量を定める
『目的』
初期容量設定を設定してパフォーマンスを向上させましょう。
『Before』
これは、初期容量を設定していません。
private List v = new ArrayList(); // 初期容量未設定
public void addObjects(Object[] o) {
// デフォルトの容量よりも配列が長い場合は Vector サイズを拡張しなければならない
for (int i = 0; i < o.length; i++) {
v.add(o[i]);
}
}
10000回の繰り返し処理で15ms要しました。
配列の容量を拡張すると、より広範な配列が割り当てられて古い配列の内容が
新しい配列にコピーされます。その結果、ガベージコレクタによって
古い配列オブジェクトが再生されます。配列の拡張には時間がかかります。
『After』
初期容量を適切に定めることで容量確保の為のオーバーヘッドを無くすことができます。
private List v = new ArrayList(10000); // 初期容量設定
public void addObjects(Object[] o) {
for (int i = 0; i < o.length; i++) {
v.add(o[i]);
}
}
10000回の繰り返し処理は 0ms(1 ms 未満)で済みました。
『まとめ』
初期容量が予め推測できるのであればパフォーマンスの向上のために設定しましょう。
当ページ・当社へのご意見やご感想があればお手数ですが「
お問い合わせ」までお願いいたします。
当社への就職をお考えの方は「
採用情報ページ」までお願いいたします。
C言語を学びたい方は「
C言語講座」もどうぞ。