10

コンストラクターのみでオブジェクトを作成する場合と比較して、メモリとパフォーマンスの使用量はどのくらいですか?

ここでの使用法は、 100 万以上のエントリを含む可能性のあるSet<Object>orList<Object>を作成することであり、Bloch の Builder パターンを使用するオーバーヘッドが懸念されます。過去に使用したことはありますが、これほど大きな範囲では使用したことがありません。

参照:項目 2: 多数のコンストラクター パラメーターに直面したときにビルダーを検討してください。Java オブジェクトの作成と破棄: パート 1に転載されています。Joshua Bloch による「Effective Java Second Edition」からの抜粋です。

4

3 に答える 3

7

追加のBuilderオブジェクトがあり、オブジェクトの作成後に破棄されます。そのため、メモリの使用量と速度に影響を与える可能性があります。ただし、Java-VM、特にServer-VM(java -server)は非常に強力に最適化されるため、VMはビルダーを完全に最適化する可能性があります。したがって、私の提案は、実際の影響を測定し(パフォーマンスを気にする場合はいつものように)、影響が大きすぎるかどうかを判断する必要があるということです。

于 2010-03-15T16:13:28.400 に答える
3

最初の説明から判断するのは難しいですが、コンストラクターとビルダーに100万を超えるエントリを渡すことを懸念している場合はCollection<Object>、1つの追加の(短命の)オブジェクトのコストについて説明する価値はほとんどありません。

于 2010-03-15T16:14:19.460 に答える
1

オブジェクトのビルド直後にビルダー参照をガベージ コレクションできるため、コストはごくわずかです。

1m の余分なオブジェクトを作成した場合の影響は、どのような状況でも 10 秒未満である必要があります。

于 2010-03-15T20:07:45.553 に答える