Переменная производительность доступа

1

Я разрабатываю приложение, у которого есть класс DataManager, который содержит ArrayList<Object[]>. Поскольку этот ArrayList нужно использовать в других классах, мне интересно, какой будет самый эффективный и быстрый способ доступа к этому списку, учитывая, что это приложение будет работать на платформе Android.

A) создайте public static ArrayList<Object[]> data в классе DataManager и укажите его в других классах через DataManager.data

B) создать метод public ArrayList<Object[]> getData в классе DataManager и иметь методы в других классах, создавая локальную переменную ArrayList<Object[]> data = mDataManager.getData() для временного использования.

C)..?

Мне кажется, что у B больше накладных расходов из-за создания объекта. Также я читаю статические быстрее, чем нестатические?

Теги:
performance
static

1 ответ

0
Лучший ответ

Вариант B не увеличивает использование памяти, так как у вас будет только один объект ArrayList (все используемые им объекты просто содержат простую ссылку, а не копию). Объекты, которые используют ArrayList, могут также хранить эту ссылку как переменную экземпляра, а не запрашивать ее из класса менеджера каждый раз, когда это необходимо.

Я где-то читал, что доступ к переменным экземпляра немного быстрее, чем доступ к переменным класса (static), но у меня нет ссылки на источник.

Разница в производительности вряд ли будет значимой. Однако вариант В дает вам лучшую инкапсуляцию.

  • 0
    При этом, вариант B будет таким же, как вариант A, оба ссылаются на один и тот же объект. Как насчет производительности доступа к статическому члену по сравнению с созданием локального члена с помощью открытого метода?
  • 0
    Извините, я неправильно понял ваш вопрос в первый раз. Локальные переменные обычно быстрее, чем static . Опция B накладывает небольшие накладные расходы на вызов метода, но не имеет значения. Сосредоточьтесь на ясности дизайна и позвольте компилятору позаботиться об оптимизации кода.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню