Есть ли потеря памяти и производительности при использовании Bloch's Builder Pattern? - PullRequest
9 голосов
/ 15 марта 2010

Каково использование памяти и производительности по сравнению с созданием объекта только с конструктором?

Здесь используется при создании Set<Object> или List<Object>, который может содержать более миллиона записей, и я обеспокоен накладными расходами на использование шаблона Блоха Блоха. Я использовал его в прошлом, но никогда в таком большом объеме.

Ссылка: Элемент 2. Рассмотрим конструктор, когда сталкиваемся со многими параметрами конструктора , перепечатанными в Создание и уничтожение объектов Java: часть 1 , взято из Effective Java Second Edition Джошуа Блоха.

Ответы [ 3 ]

7 голосов
/ 15 марта 2010

У вас есть дополнительный объект Builder, который отбрасывается после создания объекта. Таким образом, вы можете иметь некоторое влияние на использование памяти и скорость. Но Java-VM действительно очень сильно оптимизирует, особенно Server-VM (java -server), поэтому VM может полностью оптимизировать сборщик. Поэтому я предлагаю вам измерить реальное влияние (как всегда, если вы заботитесь о производительности) и решить, является ли воздействие слишком большим.

3 голосов
/ 15 марта 2010

Трудно сказать по вашему первоначальному описанию, но если вы обеспокоены передачей Collection<Object> с ~ миллионами записей конструктору вместо Строителя, то стоимость одного дополнительного (недолговечного) объекта едва ли стоит обсуждение.

1 голос
/ 15 марта 2010

Стоимость незначительна, так как ссылка на сборщика может быть собрана мусором сразу после постройки объекта.

В любом случае влияние создания 1 м дополнительных объектов должно быть меньше 10 с.

...