Singleton Java по сравнению с помехами - является там реальным выигрышем в производительности?

Предупреждение об использовании $(document).ready() в Internet Explorer. Если HTTP-запрос прерывается до , весь документ загружается (например, при переходе страницы в браузер, кликается другая ссылка) IE запускает событие $(document).ready.

Если какой-либо код в событии $(document).ready() ссылается на объекты DOM, существует потенциал для того, чтобы эти объекты не были найдены, и могут возникнуть ошибки Javascript. Либо охраняйте свои ссылки на эти объекты, либо отложите код, который ссылается на эти объекты на событие window.load.

Я не смог воспроизвести эту проблему в других браузерах (в частности, Chrome и Firefox)

15
задан Bill the Lizard 12 March 2012 в 01:44
поделиться

7 ответов

Со строгой точки зрения производительности во время выполнения различие действительно незначительно. Основное различие между этими двумя ложится в том, что "статический" жизненный цикл связан с classloader, тогда как для одиночного элемента это - регулярный жизненный цикл экземпляра. Обычно лучше избегать бизнеса ClassLoder, Вы избегаете некоторых хитрых проблем, особенно когда Вы пытаетесь перезагрузить веб-приложение.

15
ответ дан 1 December 2019 в 00:27
поделиться

Я использовал бы одиночный элемент, если бы он должен был сохранить какое-либо состояние и статические классы иначе. Нет никакого смысла в инстанцировании чего-то, даже единственного экземпляра, если это не должно хранить что-то.

16
ответ дан 1 December 2019 в 00:27
поделиться

На основе моего опыта, единственная вещь, которая - вопросы, который легче дразнить в модульных тестах. Я всегда чувствовал, что Singleton является легче и естественной для насмешки. Если Ваша организация позволяет Вам использовать JMockit, она не имеет значения, так как можно преодолеть эти проблемы.

3
ответ дан 1 December 2019 в 00:27
поделиться

Если мое исходное сообщение было корректным пониманием и обсуждением от Sun, который был связан с, точно (который я думаю, что это могло бы быть), то я думаю, что необходимо сделать компромисс между ясностью и производительностью.

Задают себе эти вопросы:

  1. объект Singleton делает то, что я делаю более ясный?
  2. мне нужен объект сделать эту задачу, или она больше подходит для статических методов?
  3. мне нужна производительность, которую я могу получить, не используя Singleton?
3
ответ дан 1 December 2019 в 00:27
поделиться

Статичный плохо для расширяемости начиная со статических методов, и поля не могут быть расширены или переопределены подклассами.

Это также плохо для модульных тестов. В модульном тесте Вы не можете помешать побочным эффектам различных тестов перетечь, так как Вы не можете управлять classloader. Статические поля, инициализированные в одном модульном тесте, будут видимыми в другом или хуже, запущение тестов одновременно приведет к непредсказуемым результатам.

Singleton обычно хорошо шаблон при использовании экономно. Я предпочитаю использовать платформу DI и позволять, которые управляют моими экземплярами для меня (возможно в различных объемах, как в Guice).

11
ответ дан 1 December 2019 в 00:27
поделиться

Это обсуждение помогает? (Я не знаю, является ли это запретным для соединения с другим форумом программирования, но я только заключил бы целое обсуждение в кавычки =))

Обсуждение Sun этого предмета

, вердикт, кажется, что это не имеет действительно значения для имения значение в большинстве случаев, хотя технически статические методы более эффективны.

0
ответ дан 1 December 2019 в 00:27
поделиться

Напишите некоторый код для измерения уровня. Ответ будет зависящим от JVM (JDK Sun мог бы работать по-другому, чем JRockit), и VM отмечает Ваше использование приложения.

0
ответ дан 1 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: