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言語講座」もどうぞ。