Статические методы или Одиночные элементы, мудрые производительностью (Android)?

Проблема заключалась в том, что я объявил «OrderOrderItem» как внутренний класс контроллера. Перемещение OrderOrderItem в новый файл заставляет вещи работать правильно.

8
задан l_39217_l 27 February 2009 в 15:53
поделиться

4 ответа

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

  1. Избегайте (потенциал) наверху вызовов виртуальной функции.
  2. Устраняет память, необходимую для фактического экземпляра класса.
  3. Избавляет от необходимости получать экземпляр класса, когда Вы используете его.

Но честно я, вероятно, все еще сделал бы это a singleton так или иначе. Усиления Вы продвинулись бы, не делая его, вероятны столь маленькие, что они имели бы нулевое значение, даже в мобильной среде.

10
ответ дан 5 December 2019 в 07:37
поделиться

Можно ли избежать любой ситуации и сделать ли их регулярными классами?

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

Одиночные элементы и статические методы может быть очень трудно протестировать; в этом отношении одиночные элементы являются чрезвычайно статическими методами, но с другим именем. У Misko Hevery, который работает над командой Google Test, есть несколько хороших статей об этом предмете:

6
ответ дан 5 December 2019 в 07:37
поделиться

Не волнуйтесь об абсурдной микрооптимизации как этот. Беспокойство о пригодности для обслуживания.

Это кажется, что приложение записано в полностью стиль неOO и могло извлечь выгоду много из устранения большинства тех "вспомогательных методов" и помещения их, где они принадлежат, с данными они воздействуют на.

4
ответ дан 5 December 2019 в 07:37
поделиться

При ответе на вопрос по номиналу, статические вызовы, вероятно, потребуют наименьшего количества суммы мощности ЦП. Причина состоит в том, что нормальные методы динамичные связанный и требуют некоторого поиска во времени выполнения, в то время как статические методы связываются время компиляции.

Однако это, вероятно, не будет иметь значения в Вашем приложении. Разница является действительно небольшой. Если Ваше приложение сделает какую-либо вещь с gui, xml рендеринг, то интернет-соединения или другое внешнее управление Ваш найдут, что эти операции затмевают простые поиски метода огромным фактором.

Даже если Вы не сделаете, то во время профилирования Вас, более вероятно, встретятся с единственным узким местом, держащим Ваше приложение, и обнаружат, что это не поиск метода, но некоторая логика, Вы сделали Ваш сам. Например, Вы использовали arraylist вместо hashset, и содержит метод, оказываются дорогими.

Таким образом, поскольку производительность в этих случаях действительно не имеет значения, я рекомендовал бы использовать одноэлементные реализации выше статических методов, поскольку дизайн немного более гибок. Хотя вне выбора, который Вы предложили, я отброшу классы помощника полностью и встрою методы в Вашем pojo's.

2
ответ дан 5 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

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