OpenJDK 14 性能保持提升,但 OpenJDK 8 仍是最强王者

局长
 局长
发布于 2020年03月21日
收藏 19

OpenJDK 14 与 OpenJDK 8 及多个主要版本的性能基准测试对比。

OpenJDK 14 已于近日 GA,其在性能方面是否有改进、以及有哪些改进引起了不少开发者的关注。本文将会介绍通过运行新的基准测试以考察从 OpenJDK 8 至 14 的所有主要发行版本,同时考察跨多个工作负载的 JVM 性能,以及 OpenJDK 14 与 JVM 先前版本相比性能如何。

此次测试通过在被测试的每个发行版上使用相同的 Java 字节码编译的 Java 程序来查看 JVM 的性能,并使用被测软件包的参考/上游编译版本。为了保证测试受干扰的因素将降至最低,每次都使用相同的选项,除了交换用于测试每个发行版的 OpenJDK x86_64 Linux 构建之外,没有进行任何其他更改。

通过使用 Phoronix 的测试套件,测试内容包含从 SPECjbb 到 Java 2D 工作负载。

测试环境以及测试机器配置:

首先通过使用 Java 2D 基准测试对 Java 图形管道的性能进行压测,可以看到文本渲染性能一直稳步提升,直到第 12 版达到最高点,然后逐渐下降为目前 13 和 14 的水平,与 OpenJDK 8 比较相似。

而在 Java 2D 的图像渲染性能方面,它们的水平基本保持一致,但是 OpenJDK 14 以微弱的的性能优势成为了最好性能的那个。

这里还测试了使用矢量图形的渲染效果,水平基本保持一致。

通过进行非常基本的 Java SciMark 微基准测试,可以看到 OpenJDK 8 目前为止是最快的,并且自 OpenJDK 9 至 14 以来,性能基本上持平。OpenJDK 的运行速度约为 OpenJDK 8 的 88%。

通过使用 Java Bork 文件加密软件包进行测试,在经过测试的版本中,性能基本上没有变化。

自 OpenJDK 8 以来,DaCapo 的 H2 基准被建模为类似于 JDBCbench 的内存中(in-memory)基准,其性能得到了很好的提升,与此前的版本相比,OpenJDK 14 再次以微弱的优势获得了第一名。

可以看到,基于 Python Pybench 的 Jython 基准测试也是 OpenJDK 8 拥有最佳成绩的众多案例之一。

在运行 Daytrader 基准测试的 Tradebeans 测试中,OpenJDK 14 再度以微弱的优势拿下最佳的成绩。

就像打乒乓球一样,Renaissance 的 Scala Dotty 基准测试提供了一个类似的例子,说明 OpenJDK 的性能也会上下波动。在此次测试中,OpenJDK 14 又比最近的版本好一些。

在其他一些 Renaissance 基准测试中,OpenJDK 11〜12 的性能反而最差,而 OpenJDK 14 提供的性能与 OpenJDK 8 类似。

在使用 Jenetics+Futures 遗传算法的 Renaissance 基准测试中,所有版本的性能基本保持一致。

通过观察使用 Apache HBase 进行的这几个基准测试,可以发现 OpenJDK 8 运行最快,或者这几个 Java 版本的性能基本持平。

在使用 SPECjbb 进行的基准测试中 ,OpenJDK 8 是迄今为止最快且明显拉开距离的版本。自版本 11 起,OpenJDK 的 SPECjbb 性能有所提高,不过在运行 Ubuntu Linux 的 AMD Ryzen 9 3950X 系统上,任何版本的速度均未达到 OpenJDK 8 的速度。

结论:

当对所有执行的 Java 基准测试结果取几何平均值时,OpenJDK 8 毫无疑问是最快的 Java 版本。业界经常听到有关 OpenJDK 8 仍可提供最佳性能的消息,以及为什么英特尔的 Clear Linux 在有众多选择的情况下仍坚持该版本的原因。从本文的测试结果来看,这不足为奇。

好消息是,从这种几何意义上来看,OpenJDK 14 是经过测试的发行版中第二快的版本。与之前的版本相比,其领先优势虽然很小,但整体来看毕竟是在保持进步。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:OpenJDK 14 性能保持提升,但 OpenJDK 8 仍是最强王者
加载中

精彩评论

eechen
eechen
J8就是坚挺!
开源中国合格公民
开源中国合格公民
里面的用词也有意思,JDK14胜出的大多是微弱,JDK8胜出的不是最佳就是优秀😄
这波天秀
这波天秀
换个版本估计比换个语言成本还高,所以继续打磨jdk8

最新评论(16

penngo
penngo
用的是哪一个牌子openjdk来测试?
eechen
eechen
J8就是坚挺!
开源中国首席罗纳尔多
开源中国首席罗纳尔多
您好,请问jdea2019提前支持jdk14的语法了吗?
Mark哥是我
Mark哥是我
2020才支持
开源中国首席罗纳尔多
开源中国首席罗纳尔多
您好,不是都提前支持语法先的吗?然后完全支持?
不懂技术的程序员
不懂技术的程序员
坐等openjd14
这波天秀
这波天秀
换个版本估计比换个语言成本还高,所以继续打磨jdk8
红薯片
红薯片
CMS就是适合跑分啊,但是延迟呢,嘿嘿嘿
dwingo
dwingo
JDK8最快很有可能是因为默认ParallelGC的原因, JDK9以后默认G1GC其实对性能有些影响的(多数情况差别不大).
而纯计算在我测试的结果是越新的版本越快,当然差别也不大.
orpherus
orpherus
同样的项目,gc团队的测试结果跟他们很不同
dwingo
dwingo
奇怪的是,新版本jdk的parallel gc性能都不如jdk8的,甚至经常还不如默认的g1,原因不明。
开源中国合格公民
开源中国合格公民
里面的用词也有意思,JDK14胜出的大多是微弱,JDK8胜出的不是最佳就是优秀😄
开源中国合格公民
开源中国合格公民
不太懂JVM测试,不过看完有几个问题,JVM配置是什么?JVM走的都是默认的配置吗?压测的时间是多久呢?
orpherus
orpherus
因为Java 8的默认gc牺牲latency换throughput,更适合跑分。
返回顶部
顶部