Вышла Java 17. Согласно документации, в новую версию попало более 2700 закрытых задач и 14 JEP’ов. Но изменения также коснулись и производительности. Насколько именно, узнал разработчик и создатель планировщика OptaPlanner Джеффри Де Смет, сравнив между собой показатели JDK 17, JDK 16 и JDK 11.
Чтобы получить прирост производительности, достаточно просто поменять установку JDK. Автор проводил исследование методом эталонного тестирования на устройстве со следующими характеристиками:
JDK, которое использовалось как для компиляции, так и для запуска:
openjdk 11.0.12 2021-07-20 OpenJDK Runtime Environment Temurin-11.0.12+7 (build 11.0.12+7) OpenJDK 64-Bit Server VM Temurin-11.0.12+7 (build 11.0.12+7, mixed mode)
openjdk 16.0.2 2021-07-20 OpenJDK Runtime Environment (build 16.0.2+7-67) OpenJDK 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)
openjdk 17 2021-09-14 OpenJDK Runtime Environment (build 17+35-2724) OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)
Параметры JVM: -Xmx3840M
со сборщиком мусора:
-XX:+UseG1GC
для G1GC, сборщика мусора с низкой задержкой (по умолчанию во всех трех JDK);-XX:+UseParallelGC
для ParallelGC, сборщика мусора с высокой пропускной способностью.Main class: org.optaplanner.examples.app.GeneralOptaPlannerBenchmarkApp
из модуля optaplanner-examples
в планировщике OptaPlanner 8.10.0.Final.
С помощью OptaPlanner во время каждого запуска решается 11 задач планирования, таких как ротация кадров, составление школьного расписания и оптимизация облачных вычислений. Каждая задача планирования выполняется в течение пяти минут. Ведение журнала установлено на INFO
. Эталон начинается с 30-секундного разогрева JVM.
Решение задачи планирования не требует никаких операций ввода-вывода (за исключением нескольких миллисекунд при запуске для загрузки входных данных). Один процессор полностью загружен. Он постоянно создает множество объектов с коротким жизненным циклом, а GC потом их собирает.
Контрольные показатели измеряют количество подсчитанных баллов в секунду. Выше — лучше. Подсчет баллов для предлагаемого решения по планированию нетривиален. Он включает в себя множество вычислений, в том числе проверку на наличие конфликтов между каждым объектом и каждым другим объектом.
После запуска каждый JDK и каждая комбинация сборщика мусора запускают последовательно по три раза. Приведенные ниже результаты собой среднее значение трех прогонов.
Относительная оценка G1GC.
В таблицу ниже сведены данные по количеству подсчетов баллов в секунду с G1GC на разных JDK.
Относительная оценка ParallelGC (чем выше, тем лучше).
В таблицу ниже сведены данные по количеству подсчетов баллов в секунду с ParallelGC на разных JDK.
Относительная оценка JDK 17.
В таблицу ниже сведены данные по количеству подсчетов баллов в секунду на JDK 17 с разными сборщиками мусора.
Усредненные значения при использовании OptaPlanner показали, что:
В принципе, считает Джеффри Де Смет, исследование не показало ничего удивительного: последняя версия JDK быстрее, а сборщик мусора с высокой пропускной способностью быстрее сборщика мусора с низкой задержкой.
Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…
В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…
Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…
Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…
Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…
IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…