Использование переменных из других классов медленнее, чем переменные в том же классе? - PullRequest
2 голосов
/ 06 августа 2011

Я делаю игру, и недавно я организовал весь код. Для рисования я теперь использую переменные из другого класса, и я заметил довольно значительное снижение производительности во время реорганизации.

Так что мне интересно: Доступ к переменным в другом классе медленнее, чем к переменным в том же классе?

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

Ответы [ 2 ]

5 голосов
/ 06 августа 2011

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

  • Шаг 1: Найдите способ измерить разницу.
  • Шаг 2: Измерьте это
  • Шаг 3: Примите меры, основанные на ваших измерениях

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

3 голосов
/ 07 августа 2011

Обычно чтение полей в разных объектах даже через методы не имеет никакого значения.Как только ваша нагрузка возрастает в определенной «горячей точке», компилятор горячей точки Java оптимизирует байт-код на лету, чтобы он больше не имел значения.

Это одна из причин, почемуJVM так быстро работает.И это одна из причин, почему люди говорят вам следующее:

  • не оптимизируйте микро-код Java для повышения производительности, потому что вы что-то предполагаете.Постарайтесь найти доказательства, прежде всего
  • , особенно избегайте самых простых вещей, таких как методы встраивания.Hotspot делает все это уже
  • , чем проще и чище ваш код, тем больше компилятор горячей точки Java может помочь вам с производительностью

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

  • Недостаточно места в куче (и связанное с этим: сборка мусора навсегда, высокая загрузка процессоранагрузка).Вы можете проверить это с помощью таких инструментов, как visualvm и его плагинов.
  • Конфликт: проблемы параллелизма с потоками, сражающимися за одни и те же ресурсы.Если у вас нет операций ввода-вывода и простоя процессора, это, вероятно, ваша проблема.Для проверки используйте такие инструменты, как top.
  • Достаточно сконфигурировано памяти, но ваша система выполняет много операций ввода-вывода, либо из-за подкачки (слишком мало физической памяти), либо из-за того, что ваше программное обеспечение ожидает ввода-выводаО.Проверка на ожидание ввода / вывода

Особенно, если у вас много данных, переменных, частиц, как вы говорите, сначала проверьте очевидные вещи: -)

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...