Java 11 究竟比 8 快了多少?看看这个基准测试

jopen 3年前
   <p>开源规划调度引擎 OptaPlanner 官网发布了一个 <a href="/misc/goto?guid=5047997956523494727" rel="nofollow,noindex">Java 11 GC 性能基准测试报告</a> 。</p>    <p><img alt="Java 11 究竟比 8 快了多少?看看这个基准测试" src="https://simg.open-open.com/show/87f010d9d781cd32ace576594e861088.jpg" /></p>    <p>当前使用量最大的 Java 版本是 8,所以测试者用 Java 8 与 Java 11 进行对比测试。GC 是影响 Java 性能的关键因素,所以测试自然也基于 GC,在 G1 GC 和并行 GC 下分别进行了测试,结果如下:</p>    <p>Java 8 vs. Java 11</p>    <p>使用 G1 GC</p>    <p><img alt="Java 11 究竟比 8 快了多少?看看这个基准测试" src="https://simg.open-open.com/show/e05570bed79d99564185ae4872c107e5.png" /></p>    <p>G1 GC 下每秒分值:</p>    <p><img alt="Java 11 究竟比 8 快了多少?看看这个基准测试" src="https://simg.open-open.com/show/0c571230489a14cb3cdd22f4a09dbba7.png" /></p>    <p>Java 11 在几乎所有测试数据集上都有速度上的提升。平均而言,仅通过切换到 Java 11 就有 16% 的改进,这种改进可能是因为 Java 10 中引入了 <a href="/misc/goto?guid=4959012549497257936" rel="nofollow,noindex">JEP 307: Parallel Full GC for G1</a> 。</p>    <p>使用并行 GC</p>    <p><img alt="Java 11 究竟比 8 快了多少?看看这个基准测试" src="https://simg.open-open.com/show/65cc017aa872af1798e710b912183a78.png" /></p>    <p>并行 GC 下每秒分值:</p>    <p><img alt="Java 11 究竟比 8 快了多少?看看这个基准测试" src="https://simg.open-open.com/show/c712f9047c3376eee0056c6397b7b84a.png" /></p>    <p>使用并行 GC,结果不如 G1,某些数据集上有所改进,但其它数据集保持不变甚至出现性能下降。平均而言,Java 11 的性能提升了 4% 以上。</p>    <p>测试者还在 Java 11 上对并行 GC 与 G1 GC 进行对比:</p>    <p>Java 11 上并行 GC vs. G1 GC</p>    <p><img alt="Java 11 究竟比 8 快了多少?看看这个基准测试" src="https://simg.open-open.com/show/ffff543a0c439f10d3d251be37b6cbd8.png" /></p>    <p>结果表明 G1 GC 整体上不如并行 GC。</p>    <p>OptaPlanner 表示,从 Java 8 到 Java 11,G1 GC 的平均速度改进为 16.1%,并行 GC 为 4.5%。此外虽然并行 GC 面向吞吐量,而 G1 则侧重于低延迟 GC,但是 Java 11 中带来的 G1 显著改进,使得将两者进行直接比较是有意义的。此外,基于基准测试中的大多数数据集来看,并行 GC 还是更适合 OptaPlanner 的,因为吞吐量对于解决 OptaPlanner 的优化问题更为重要。</p>    <p>详细测试基准与过程查看原文:</p>    <p>https://www.optaplanner.org/blog/2019/01/17/HowMuchFasterIsJava11.html</p>    <p> </p>