Вышла 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.
Сравнение JDK 11 с JDK 17 и JDK 16 с JDK 17
В таблицу ниже сведены данные по количеству подсчетов баллов в секунду с G1GC на разных JDK.
Относительная оценка ParallelGC (чем выше, тем лучше).
Сравнение JDK 11 с JDK 17 и JDK 16 с JDK 17
В таблицу ниже сведены данные по количеству подсчетов баллов в секунду с ParallelGC на разных JDK.
Относительная оценка JDK 17.
G1 → ParallelGC
В таблицу ниже сведены данные по количеству подсчетов баллов в секунду на JDK 17 с разными сборщиками мусора.
Усредненные значения при использовании OptaPlanner показали, что:
В принципе, считает Джеффри Де Смет, исследование не показало ничего удивительного: последняя версия JDK быстрее, а сборщик мусора с высокой пропускной способностью быстрее сборщика мусора с низкой задержкой.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…