Java 17快了多少?JDK 17、16和11的性能比较和分析
点击关注公众号,Java干货及时送达
点击上方 Java技术迷,选择 设为星标
测试环境和流程
配置
Intel® Xeon® Silver 4116 @ 2.1 GHz (12 cores total / 24 threads)
,128 GiB
RAM ,RHEL 8 x86_64
JDK 11
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)
JDK 16
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)
JDK 17 (下载日期为 2021-09-06)
openjdk 17 2021-09-14
OpenJDK Runtime Environment (build 17+35-2724)
OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)
-Xmx3840M
并明确指定垃圾回收器:-XX:+UseG1GC
for G1GC,低延迟垃圾回收器(三个 JDK 版本的默认项)-XX:+UseParallelGC
for ParallelGC,高吞吐量垃圾回收器
4、Main class:org.optaplanner.examples.app.GeneralOptaPlannerBenchmarkApp
,来自 OptaPlanner 8.10.0.Final
中的 optaplanner-examples
模块
每次运行都使用 OptaPlanner 解决 11 个规划问题,例如员工排班、学校时间表和云优化。每个规划问题运行 5 分钟。日志记录设置为 INFO。基准测试以 30 秒的 JVM 预热开始。 解决规划问题不涉及 IO(除了在启动期间加载输入的几毫秒)。单个 CPU 完全饱和。它会不断地创建许多短期存在的对象,然后 GC 将它们收集起来。 基准测试会衡量每秒计算的分数数量,分数越高代表性能越好。为提议的规划解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。
5、运行次数:每个 JDK 和每个垃圾回收器组合按顺序运行 3 次。下面的结果是这 3 次运行的平均值。
测试结果
Java 11 (LTS) and Java 16 versus Java 17 (LTS)
G1GC versus ParallelGC on Java 17
总结
对于 G1GC(默认),Java 17 比 Java 11 快 8.66%,比 Java 16 快 2.41%
对于 ParallelGC,Java 17 比 Java 11 快 6.54%,比 Java 16 快 0.37%
Parallel GC 比 G1 GC 快 16.39%
原文:https://www.optaplanner.org/blog/2021/09/15/HowMuchFasterIsJava17.html
评论