发布时间:2026-03-23
浏览次数:0
首先,让我们先明确一些事情:
什么是 Java 21 以及如何获取它
Java 21属于Java平台的全新版本,Java平台可是用于编写的具备可靠性的编程语言。它带来了诸多新功能,还有常见问题的修复以及规模较小的改进。
将于二零二三年九月十九日全面发布的Java 21 ,然而你当下能够运用候选版本构建予以尝试。我们发觉开始运用Java 21 的最为简便的方式是借助(https://.io/),我们所为亦如此。
和先前的Java 17相同,Java 21属于一个长期支持(LTS)版本,它会延续相当长的时段,所以,极好在最快的时间着手运用它,瞧瞧它是不是契合你。
这对于,意味着保障整个代码库于Java 21上毫无瑕疵地运行,且还要运行一些基准测试,以此来确保我们的用户起码能够获取跟以前一样的性能。咱们开始吧。
微基准测试
我们先要从分数总监微基准着手,我们会定期运用它去判定各类变化对于约束流性能所产生的影响。此类基准测试并不运转整个求解器,相反,它们单单聚焦于求解器的分数计算部分。它们是借助Java (JMH)予以实现的,并且在诸多Java虚拟机 (JVM)分支里运行,还进行了充足的预热。这使得我们对结果满怀信心。实际上,这些数字的误差幅度仅仅为±2%。
在下述情况里,是Java 21以及Java 17之上的约束流性能codejock v171,分别情况 ,有着各自表现。
大多数情形之下,当切换至Java 21时,性能往往会稍有提升,而此“ ”之处便是唯一的异常状况,借助对求解器开展一些额外的事宜,大概率我们也能够提升该基准测试的性能。
需留意的是,我们运行这些基准测试时,所用的垃圾收集器是特定这个,而非默认的G1GC ,在文章后续部分codejock v171,我们会对缘由予以阐释。
现实世界的基准
现今,我们已然目睹了微基准,此刻,便是要把它们跟现实世界里的求解器性能予以比较的时候了,这涵盖了整个求解器,并非只是分数计算那一部分。
我们于 10 个各异的 JVM 分支里,手动去运行求解器 ,并且运用中值计算速度。我们挑选了可用基准的子集 ,目的是保持较短暂的运行时间,;从所运用的启发法以及所执行的代码路径来讲 ,该选择展现了整个基准测试套件。再次将其用作垃圾收集器。结果如下:
这儿不存在啥惊喜,我们目睹的是全面性能有较稍微提升情况,这证实了微基准测试的结果,跟微基准相比较来看,“ ”不再被当作异常值,这挺有意思,且会作为我们去调查可能回归情况的另外一个数据点。
我们尚未针对这些大型基准构建正式的置信区间,所以无法确切地讲这些改进在统计层面具备显著性。不过,运行期间察觉到的波动足够轻微,进而足以使我们对结果满怀信心。
为什么使用 ?
在这些年份当中,我们运用了它以及它的前身,在此期间,我们察觉到它是该求解器的最佳垃圾收集器。这理应没什么可惊奇的,它是为高吞吐量专门定制的,况且求解器属于100%CPU限制的。相反,G1GC也就是默认垃圾收集器是为低延迟特意打造的,这会造成颇为显著的不同。然而,情况会出现改变,我们有时需要对我们的假设发起挑战。那它依旧是求解器的最佳垃圾收集器吗?
图中呈现出了G1GC(基线)以及与之存在的性能方面的差异,因为Java 21引入了分代ZGC,这是另外一种意在实现低延迟的GC,我们觉得把它也涵盖进去同样会是饶有趣味的。
结果(通过之前的微基准测试获得)很清楚:
若我们去增大 JVM 能够使用的堆大小,状况或许会改换,鉴于没办法很好地拓展大堆,在运用 -Xmx1G 之际,它可是明显的胜者。
结论
在这篇文章中,我们展示了:
我们倡导您去试着运用 Java 21 进而实施转换,毕竟它是无需付费的,您将会有能力去尽情享受最为新颖、最为优质的 Java 平台。
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码