再見,Java 8!Java 17 終于免費了,史上最快的 JDK。。
點擊關注公眾號,Java干貨及時送達
文 | 局長
出品 | OSC開源社區(qū)(ID:oschina2013)
上一篇:重磅!JDK 17 發(fā)布,Oracle 宣布從 JDK 17 開始正式免費。。
Java 17 已正式發(fā)布,新版本提供了不少新特性和功能增強。不過對于大多數(shù)項目而言,往往需要更改代碼才能利用到這些新變化,但性能除外 —— 開發(fā)者只需要升級 JDK 版本,就能免費獲得性能提升。
規(guī)劃調(diào)度引擎 OptaPlanner 項目負責人對 JDK 17、JDK 16 和 JDK 11 的性能基準測試進行了對比,看看 Java 17 的性能提升是否值得我們?nèi)ド墶?/p>
測試環(huán)境和流程
1、硬件
穩(wěn)定的機器,沒有任何其他計算要求的進程在運行。
配置 Intel? Xeon? Silver 4116 @ 2.1 GHz (12 cores total / 24 threads) ,128 GiB RAM ,RHEL 8 x86_64
2、JDKs(用于編譯和運行)
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)
3、JVM 選項
啟用-Xmx3840M并明確指定垃圾回收器:
-XX:+UseG1GCfor G1GC,低延遲垃圾回收器(三個 JDK 版本的默認項)-XX:+UseParallelGCfor ParallelGC,高吞吐量垃圾回收器
4、Main class
org.optaplanner.examples.app.GeneralOptaPlannerBenchmarkApp,來自 OptaPlanner 8.10.0.Final中的 optaplanner-examples模塊
每次運行都使用 OptaPlanner 解決 11 個規(guī)劃問題,例如員工排班、學校時間表和云優(yōu)化。每個規(guī)劃問題運行 5 分鐘。日志記錄設置為 INFO。基準測試以 30 秒的 JVM 預熱開始。 解決規(guī)劃問題不涉及 IO(除了在啟動期間加載輸入的幾毫秒)。單個 CPU 完全飽和。它會不斷地創(chuàng)建許多短期存在的對象,然后 GC 將它們收集起來。 基準測試會衡量每秒計算的分數(shù)數(shù)量,分數(shù)越高代表性能越好。為提議的規(guī)劃解決方案計算分數(shù)并非易事:它涉及許多計算,包括檢查每個實體與每個其他實體之間的沖突。
5、運行次數(shù)
每個 JDK 和每個垃圾回收器組合按順序運行 3 次。下面的結果是這 3 次運行的平均值。
測試結果
Java 11 (LTS) and Java 16 versus Java 17 (LTS)




G1GC versus ParallelGC on Java 17


總結
基于 OptaPlanner 用例,這些基準測試表明:
對于 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%
簡而言之,最新的 JDK 更快,高吞吐量垃圾回收器比低延遲垃圾回收器更快。
因此,Java 17 帶來的性能提升非常值得升級,更重要的是它可以免費商用,而且還是 LTS 版本。
所以你還要堅持 Java 8 一萬年不動搖嗎?
原文鏈接:https://www.optaplanner.org/blog/2021/09/15/HowMuchFasterIsJava17.html






關注Java技術棧看更多干貨


