Java17已经正式发布,新版本提供了许多新特性和增强功能。然而,对于大多数项目来说,通常需要更改代码才能利用这些新变化,性能除外——开发人员只需升级JDK版本即可免费获得性能改进。规划调度引擎OptaPlanner项目负责人对比了JDK17、JDK16和JDK11的性能基准,看看Java17的性能提升是否值得升级。测试环境及流程1.硬件:一台稳定的机器,没有任何其他需要计算的进程在运行。配置Intel?Xeon?Silver4116@2.1GHz(总共12个内核/24个线程)、128GiBRAM、RHEL8x86_642、JDK(用于编译和运行)JDK11openjdk11.0.122021-07-20OpenJDK运行时环境Temurin-11.0。12+7(build11.0.12+7)OpenJDK64-BitServerVMTemurin-11.0.12+7(build11.0.12+7,mixedmode)JDK16openjdk16.0.22021-07-20OpenJDKRuntimeEnvironment(build16.0.2+7-67)OpenJDK64-BitServerVM(build16.0.2+7-67,mixedmode,sharing)JDK17(downloaddateis2021-09-06)openjdk172021-09-14OpenJDKRuntimeEnvironment(build17+35-2724)OpenJDK64-BitServerVM(build17+35-2724,mixedmode,sharing)3.JVMoptions:enable-Xmx3840Mandexplicitlyspecifythegarbagecollector:-XX:+UseG1GCforG1GC,Low-latency垃圾收集器(三个JDK版本默认)-XX:+UseParallelGCforParallelGC,高吞吐量垃圾收集器4,Main类:org.optaplanner.examples.app.GeneralOptaPlannerBenchmarkApp,来自OptaPlanner8.10.0.Finaloptaplanner-examples每次运行中的模块使用OptaPlanner解决员工排班、学校时间表、云优化等11个规划问题。每个规划问题运行5分钟。日志记录设置为信息。基准测试以30秒的JVM预热开始。解决规划问题不涉及IO(启动期间加载输入的几毫秒除外)。单个CPU完全饱和。它不断地创建许多短暂的对象,然后由GC收集。该基准衡量每秒计算的分数数量,分数越高表示性能越好。为提议的规划解决方案计算分数并非易事:它涉及许多计算,包括检查每个实体是否与其他每个实体发生冲突。5、运行次数:每个JDK和每个垃圾收集器组合依次运行3次。下面的结果是这3次运行的平均值。测试结果Java11(LTS)和Java16对比Java17(LTS)G1GC对比Java17上的ParallelGC总结基于OptaPlanner用例,这些基准表明:对于G1GC(默认),Java17比Java11快8.66%并且比Java16快2.41%Java17比Java11快6.54%比Java16快0.37%forParallelGCParallelGC比G1GC快16.39%总之,最新的JDK速度更快,高吞吐量垃圾收集器比低latencygarbagecollector收集器速度更快。因此,Java17带来的性能提升非常值得升级,更重要的是它是免费商用的,而且还是LTS版本。所以你还要坚持Java8一万年?
