OpenJDK 14 性能提升,但 OpenJDK 8 仍是最強(qiáng)王者
OpenJDK 14 已于近日 GA,其在性能方面是否有改進(jìn)、以及有哪些改進(jìn)引起了不少開發(fā)者的關(guān)注。本文將會(huì)介紹通過(guò)運(yùn)行新的基準(zhǔn)測(cè)試以考察從 OpenJDK 8 至 14 的所有主要發(fā)行版本,同時(shí)考察跨多個(gè)工作負(fù)載的 JVM 性能,以及 OpenJDK 14 與 JVM 先前版本相比性能如何。
此次測(cè)試通過(guò)在被測(cè)試的每個(gè)發(fā)行版上使用相同的 Java 字節(jié)碼編譯的 Java 程序來(lái)查看 JVM 的性能,并使用被測(cè)軟件包的參考/上游編譯版本。為了保證測(cè)試受干擾的因素將降至最低,每次都使用相同的選項(xiàng),除了交換用于測(cè)試每個(gè)發(fā)行版的 OpenJDK x86_64 Linux 構(gòu)建之外,沒(méi)有進(jìn)行任何其他更改。
通過(guò)使用 Phoronix 的測(cè)試套件,測(cè)試內(nèi)容包含從 SPECjbb 到 Java 2D 工作負(fù)載。
測(cè)試環(huán)境以及測(cè)試機(jī)器配置:
首先通過(guò)使用 Java 2D 基準(zhǔn)測(cè)試對(duì) Java 圖形管道的性能進(jìn)行壓測(cè),可以看到文本渲染性能一直穩(wěn)步提升,直到第 12 版達(dá)到最高點(diǎn),然后逐漸下降為目前 13 和 14 的水平,與 OpenJDK 8 比較相似。
而在 Java 2D 的圖像渲染性能方面,它們的水平基本保持一致,但是 OpenJDK 14 以微弱的的性能優(yōu)勢(shì)成為了最好性能的那個(gè)。
這里還測(cè)試了使用矢量圖形的渲染效果,水平基本保持一致。
通過(guò)進(jìn)行非?;镜?Java SciMark 微基準(zhǔn)測(cè)試,可以看到 OpenJDK 8 目前為止是最快的,并且自 OpenJDK 9 至 14 以來(lái),性能基本上持平。OpenJDK 的運(yùn)行速度約為 OpenJDK 8 的 88%。
通過(guò)使用 Java Bork 文件加密軟件包進(jìn)行測(cè)試,在經(jīng)過(guò)測(cè)試的版本中,性能基本上沒(méi)有變化。
自 OpenJDK 8 以來(lái),DaCapo 的 H2 基準(zhǔn)被建模為類似于 JDBCbench 的內(nèi)存中(in-memory)基準(zhǔn),其性能得到了很好的提升,與此前的版本相比,OpenJDK 14 再次以微弱的優(yōu)勢(shì)獲得了第一名。
可以看到,基于 Python Pybench 的 Jython 基準(zhǔn)測(cè)試也是 OpenJDK 8 擁有最佳成績(jī)的眾多案例之一。
在運(yùn)行 Daytrader 基準(zhǔn)測(cè)試的 Tradebeans 測(cè)試中,OpenJDK 14 再度以微弱的優(yōu)勢(shì)拿下最佳的成績(jī)。
就像打乒乓球一樣,Renaissance 的 Scala Dotty 基準(zhǔn)測(cè)試提供了一個(gè)類似的例子,說(shuō)明 OpenJDK 的性能也會(huì)上下波動(dòng)。在此次測(cè)試中,OpenJDK 14 又比最近的版本好一些。
在其他一些 Renaissance 基準(zhǔn)測(cè)試中,OpenJDK 11?12 的性能反而最差,而 OpenJDK 14 提供的性能與 OpenJDK 8 類似。
在使用 Jenetics+Futures 遺傳算法的 Renaissance 基準(zhǔn)測(cè)試中,所有版本的性能基本保持一致。
通過(guò)觀察使用 Apache HBase 進(jìn)行的這幾個(gè)基準(zhǔn)測(cè)試,可以發(fā)現(xiàn) OpenJDK 8 運(yùn)行最快,或者這幾個(gè) Java 版本的性能基本持平。
在使用 SPECjbb 進(jìn)行的基準(zhǔn)測(cè)試中 ,OpenJDK 8 是迄今為止最快且明顯拉開距離的版本。自版本 11 起,OpenJDK 的 SPECjbb 性能有所提高,不過(guò)在運(yùn)行 Ubuntu Linux 的 AMD Ryzen 9 3950X 系統(tǒng)上,任何版本的速度均未達(dá)到 OpenJDK 8 的速度。
結(jié)論:當(dāng)對(duì)所有執(zhí)行的 Java 基準(zhǔn)測(cè)試結(jié)果取幾何平均值時(shí),OpenJDK 8 毫無(wú)疑問(wèn)是最快的 Java 版本。業(yè)界經(jīng)常聽到有關(guān) OpenJDK 8 仍可提供最佳性能的消息,以及為什么英特爾的 Clear Linux 在有眾多選擇的情況下仍堅(jiān)持該版本的原因。從本文的測(cè)試結(jié)果來(lái)看,這不足為奇。
好消息是,從這種幾何意義上來(lái)看,OpenJDK 14 是經(jīng)過(guò)測(cè)試的發(fā)行版中第二快的版本。與之前的版本相比,其領(lǐng)先優(yōu)勢(shì)雖然很小,但整體來(lái)看畢竟是在保持進(jìn)步。