← Все новости
Оптимизация генерации ресурсов в Java, три Ryzen и 225 замеров

Оптимизация генерации ресурсов в Java, три Ryzen и 225 замеров

Почему ручное разбиение задач оказалось быстрее parallel().collect() в большинстве наших тестов.Привет, Хабр!Меня зовут Юрий, и уже десять лет я разрабатываю The Great Tribes — пошаговую 4X-стратегию, в которой игроку предстоит провести свою цивилизацию от первобытных племён до космической эпохи.Игра создаётся на Java с использованием LWJGL и собственного игрового движка. Мы не используем Unity или Unreal Engine: за годы разработки у проекта сформировались собственная архитектура, система процедурной генерации мира и довольно специфические требования к обработке больших карт.Сегодня хочу рассказать об одной небольшой, но интересной оптимизации.Мы решили ускорить генерацию природных ресурсов, написали три реализации одного алгоритма и протестировали их на трёх компьютерах с процессорами AMD Ryzen.Результаты оказались любопытными: более компактный вариант с parallel().collect() в большинстве измерений уступил реализации с ручным разбиением массива на части.Но обо всём по порядку. Читать далее