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

Habr ·

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

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

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

Источник: Habr