2013-04-13 2 views
-1

У меня есть рабочий Java, который обрабатывает большое количество данных. Он ждет очереди Redis в main(), а затем вызывает различные функции для обработки данных в зависимости от типа.Оптимизация скорости работы Java-оператора

У меня есть два вопроса по оптимизации кода:

  1. было бы лучше иметь отдельные статические переменные класса и использовать их для отправки данных методов вместо использования аргументов функции?
  2. Может ли это ускорить время выполнения, если переменные, используемые в этих часто называемых методах, были бы private static on class, а не объявлены всегда снова при вводе метода?

Благодаря

+2

Независимо от того, что вы делаете, убедитесь, что вы получили показатели производительности (как синтетические, так и реальные), прежде чем внести изменения, а затем после. В противном случае вы не поймете, помогли ли вам или пострадали. – Jazzepi

ответ

1

Вы говорите о скорости, но static переменные поможет вам в основном памяти мудрым.

Если вы создаете несколько переменных instante (не static полей) и мышления изменения к в static один:

Когда несколько экземпляров класса должны иметь доступ к определенному объекту в переменной локальный для этих экземпляров (переменная экземпляра), лучше сделать эту переменную переменной static, а не содержать в каждом экземпляре отдельную ссылку. Это уменьшает пространство, взятое каждым объектом (одна меньшая переменная экземпляра), а также может уменьшить количество созданных объектов, если каждый экземпляр создает отдельный объект для заполнения этой переменной экземпляра. (Цитируется по книге Java Performance Tuning.)

Если вы не создаете переменные экземпляра, а просто передавая переменную вперед в параметрах:

С точки зрения производительности, не должно быть никакой разницы. Поскольку все параметры метода в Java передаются по ссылке, это означает, что фактическая переменная не копируется поверх: только этот адрес (указатель - ссылка на переменную) копируется в параметр вызываемого метода.

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

Нижняя линия:

Кажется мне ваш сценарий: Вы только проездом переменные вместе (ан не имеющий переменный экземпляр).

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

Смежные вопросы