Статические методы или Singletons точки зрения производительности (Android)?

голоса
8

В приложении с небольшим количеством POJOs и множества вспомогательных методов, которые работают на них, что лучше производительность мудрая: сделать вспомогательные классы одиночек или чтобы сделать статические методы?

Задан 27/02/2009 в 16:49
источник пользователем
На других языках...                            


4 ответов

голоса
9

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

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

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

Ответил 27/02/2009 в 16:58
источник пользователем

голоса
6

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

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

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

Ответил 27/02/2009 в 17:13
источник пользователем

голоса
4

Не беспокойтесь об абсурдных микро-оптимизации, как это. Беспокойство о ремонтопригодности.

Похоже, что приложение написано в совершенно не-OO стиле и может выиграть от устранения большинства из этих «вспомогательных методов» и положить их туда, где они принадлежат, с данными, они работают на.

Ответил 27/02/2009 в 17:14
источник пользователем

голоса
2

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

Сказав, что это, вероятно, не будет иметь никакого значения в вашем приложении. Разница действительно мало. Если ваше приложение любой вещи с графическим интерфейсом, XML рендеринг, интернет-соединением или другими внешними манипуляциями your'll считает, что эти действия карлика простых Mathod Lookups огромным фактором.

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

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

Ответил 27/02/2009 в 17:13
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more