Что быстрее, создать массив для атрибутов каждого игрового объекта или создать конструктор со всеми атрибутами

Итак, у меня есть частицы в моей игре-симуляторе «Падающий песок», которые хранятся в массиве (сетке), и некоторые из этих частиц содержат такую ​​​​информацию, как id (вода, песок и т. д.), температура и RandomNumberGenerator.

Что я делаю для хранения этой информации, я создаю массив:

temperatureGrid[]=new byte[w*h];

И я храню там температуру каждой частицы (если она у них есть), а не что-то вроде этого:

public particle(int x, int y, int temperature, int rng){}

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

Это сводится к SoA против AoS, по-видимому, в большинстве игр используется структура массивов вместо массива структур, что вы пытаетесь сделать здесь.

Surt 19.12.2020 12:44
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Управление транзакциями JDBC - это мощная функция, которая позволяет рассматривать группу операций с базой данных как единую единицу работы. Оно...
Выполнение HTTP-запроса с помощью Spring WebClient: GET
Выполнение HTTP-запроса с помощью Spring WebClient: GET
WebClient - это реактивный веб-клиент, представленный в Spring 5. Это реактивное, неблокирующее решение, работающее по протоколу HTTP/1.1.
Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
0
1
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Использование объектов позволяет создавать более читаемый и удобный для сопровождения код. Если вы используете Java, это означает, что производительность не вызывает беспокойства. Тем не менее, JVM создает очень быстрые программы. Единственным слабым местом является высокое использование памяти, что оказывает давление на кэши ЦП и приводит к частым сборкам мусора, что замедляет выполнение программы. Чтобы повысить производительность там, где это важно, можно использовать такие приемы, как сокращение выделения памяти и повторное использование объектов.

Другие вопросы по теме