Java 17到底快了多少?


optaplanner组织比较 JDK 17、JDK 16 和 JDK 11 的基准测试来找出答案。测试方法点击标题,直接结果:
平均而言,对于 OptaPlanner 用例,这些基准测试表明:

  • 对于 G1GC(默认),Java 17 比 Java 11 快 8.66%,比 Java 16 快 2.41%。
  • 对于 ParallelGC,Java 17 比 Java 11 快 6.54%,比 Java 16 快 0.37%。
  • Parallel Garbage Collector 比 G1 Garbage Collector 快 16.39%。

这里没有什么大惊喜:最新的 JDK 更快,高吞吐量垃圾收集器比低延迟垃圾收集器更快。
我们对 JDK 15 进行基准测试时,我们看到 Java 15 比 Java 11 快 11.24%。现在,Java 17 相对于 Java 11 的增益更少。这是否意味着 Java 17 比 Java 15 慢?
嗯,不。Java 17 也比 Java 15 快。 之前的那些基准测试是在不同的代码库上运行的(OptaPlanner 7.44 而不是 8.10)。
 
结论
总之,JDK17 版本中获得的性能非常值得升级 - 至少对于OptaPlanner用例而言。
此外,这些用例最快的垃圾收集器仍然是ParallelGC, 而不是G1GC(默认)。
 
有其他测试数据,启用AppCDS提升性能更快:应用程序类数据共享(AppCDS)是一种JVM特性,用于加速启动和节省内存。源于JDK1.5的HotSpot ,在OpenJDK 10(2018年)中,它变得广泛可用,并且更加适用。此外,最近发布的Java13使功能应用程序更加简单。
springboot服务启动测试:
java11 + AppCDS = 比没有使用AppCDS的Java11启动时间提高8%
Java17 + AppCDS = 比没有使用AppCDS的Java17启动时间提高20%
因为Java17有比Java11快10%,因此,使用Java17+AppCDS比java11快了整整30%