百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

与 Java 17 相比,Java 21 究竟有多快?

yuyutoo 2024-10-23 16:40 7 浏览 0 评论

随着 Java 21 的发布已经进入了倒计时阶段,你可能想知道它与 Java 17 相比,有什么不同以及是否应该升级。基于此,开源软件公司 Timefold 进行了梳理与实测,借助自家的 Timefold Solver 工具分享了 Java 21 的真实运行情况(与 Java 17 相比)。

原文链接:https://timefold.ai/blog/2023/java-21-performance/

未经允许,禁止转载!

作者|Luká? Petrovicky

译者|Ric Guan 责编|屠敏

出品|CSDN (ID:CSDNnews)

首先,让我们先明确一些事情:

什么是 Java 21 以及如何获取它

Java 21 是 Java 平台的新版本,Java 平台是编写 Timefold Solver 的可靠编程语言。它带来了许多新功能,以及常见的问题修复和较小的改进。

Java 21 将于 2023 年 9 月 19 日全面发布,但你现在可以使用候选版本构建进行尝试。我们发现开始使用 Java 21 的最简单方法是使用 SDKMAN(https://sdkman.io/),我们也是这样做的。

与之前的 Java 17 一样,Java 21 是一个长期支持 (LTS) 版本;它会持续很长一段时间。因此,最好尽快开始使用它,看看它是否适合你。

对于 Timefold Solver 来说,这意味着确保整个代码库在 Java 21 上完美运行,并运行一些基准测试以确保我们的用户至少可以获得与以前相同的性能。让我们开始吧。

微基准测试

我们将从分数总监微基准开始,我们定期使用它来确定各种变化对约束流性能的影响。这些基准测试并不运行整个求解器;相反,他们只专注于求解器的分数计算部分。它们是使用 Java Microbenchmark Harness (JMH) 实现的,并且在许多 Java 虚拟机 (JVM) 分支中运行并进行了充分的预热。这让我们对结果充满信心。事实上,这些数字的误差幅度仅为±2%。

以下是 Java 21 与 Java 17 上的约束流性能:

大多数情况下,切换到 Java 21 时性能都会略有提高。“Conference Scheduling”基准测试是唯一的异常值,通过对求解器进行一些额外的工作,我们很可能也会提高该基准测试的性能。

应该注意的是,我们使用 ParallelGC 作为垃圾收集器 (GC) 运行这些基准测试,而不是默认的 G1GC。在这篇文章的后面,我们将解释原因。

现实世界的基准

现在我们已经看到了微基准,是时候将它们与现实世界的求解器性能进行比较了。这包括整个求解器,而不仅仅是分数计算部分。

我们在 10 个不同的 JVM 分支中手动运行求解器,并使用中值计算速度。我们选择了可用基准的子集,以保持较短的运行时间;就所使用的启发法和所执行的代码路径而言,该选择代表了整个基准测试套件。再次使用ParallelGC作为垃圾收集器。结果如下:

这里没有什么惊喜。我们看到全面的性能小幅提升,证实了微基准测试的结果。与微基准相比,“Conference Scheduling”不再被视为异常值,这很有趣,并将作为我们调查可能的回归的另一个数据点。

由于我们尚未为这些大型基准建立正式的置信区间,因此我们无法肯定地说这些改进在统计上具有显性。 然而,运行之间观察到的波动足够小,因此足以让我们对结果充满信心。

为什么使用 ParallelGC ?

在我们使用 Timefold Solver 及其前身 OptaPlanner 的这些年里,我们发现 ParallelGC 是该求解器的最佳垃圾收集器。这应该不足为奇 - ParallelGC 是为高吞吐量而定制的,并且求解器是 100% CPU 限制的。相反,G1GC(默认垃圾收集器)是为低延迟量身定制的,这会产生相当大的差异。然而,事情会发生变化,我们有时需要挑战我们的假设。ParallelGC 仍然是求解器的最佳 GC 吗?

下图展示了G1GC(基线)和ParallelGC之间的性能差异。由于 Java 21 引入了分代 ZGC,这是另一种旨在低延迟的 GC,我们认为将其也包含在内也会很有趣。

结果(通过之前的微基准测试获得)很清楚:

  • ParallelGC 仍然是求解器的最佳 GC。

  • G1GC 位居第二,但速度要慢得多。

  • ZGC 是三者中迄今为止最差的。

如果我们增加 JVM 可用的堆大小,情况可能会改变,因为 ParallelGC 不能很好地扩展大堆,使用 -Xmx1G 时,它是明显的赢家。

结论

在这篇文章中,我们展示了:

  • Timefold Solver 1.1.0 与 Java 21 完美配合,无需任何更改。

  • 切换到 Java 21 可能会给您的 Timefold Solver 应用程序带来微小的性能改进,但您的效果可能会略有不同。

  • ParallelGC 仍然是求解器的最佳垃圾收集器。

我们鼓励您尝试 Java 21 并进行切换。毕竟它是免费的,你将能够享受最新、最好的 Java 平台。


相关推荐

ETCD 故障恢复(etc常见故障)

概述Kubernetes集群外部ETCD节点故障,导致kube-apiserver无法启动。...

在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法

FreeRADIUS为AAARadiusLinux下开源解决方案,DaloRadius为图形化web管理工具。...

如何排查服务器被黑客入侵的迹象(黑客 抓取服务器数据)

---排查服务器是否被黑客入侵需要系统性地检查多个关键点,以下是一份详细的排查指南,包含具体命令、工具和应对策略:---###**一、快速初步检查**####1.**检查异常登录记录**...

使用 Fail Ban 日志分析 SSH 攻击行为

通过分析`fail2ban`日志可以识别和应对SSH暴力破解等攻击行为。以下是详细的操作流程和关键分析方法:---###**一、Fail2ban日志位置**Fail2ban的日志路径因系统配置...

《5 个实用技巧,提升你的服务器安全性,避免被黑客盯上!》

服务器的安全性至关重要,特别是在如今网络攻击频繁的情况下。如果你的服务器存在漏洞,黑客可能会利用这些漏洞进行攻击,甚至窃取数据。今天我们就来聊聊5个实用技巧,帮助你提升服务器的安全性,让你的系统更...

聊聊Spring AI Alibaba的YuQueDocumentReader

序本文主要研究一下SpringAIAlibaba的YuQueDocumentReaderYuQueDocumentReader...

Mac Docker环境,利用Canal实现MySQL同步ES

Canal的使用使用docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中,并在springboo...

RustDesk:开源远程控制工具的技术架构与全场景部署实战

一、开源远程控制领域的革新者1.1行业痛点与解决方案...

长安汽车一代CS75Plus2020款安装高德地图7.5

不用破解原车机,一代CS75Plus2020款,安装车机版高德地图7.5,有红绿灯读秒!废话不多讲,安装步骤如下:一、在拨号状态输入:在电话拨号界面,输入:*#518200#*(进入安卓设置界面,...

Zookeeper使用详解之常见操作篇(zookeeper ui)

一、Zookeeper的数据结构对于ZooKeeper而言,其存储结构类似于文件系统,也是一个树形目录服务,并通过Key-Value键值对的形式进行数据存储。其中,Key由斜线间隔的路径元素构成。对...

zk源码—4.会话的实现原理一(会话层的基本功能是什么)

大纲1.创建会话...

Zookeeper 可观测性最佳实践(zookeeper能够确保)

Zookeeper介绍ZooKeeper是一个开源的分布式协调服务,用于管理和协调分布式系统中的节点。它提供了一种高效、可靠的方式来解决分布式系统中的常见问题,如数据同步、配置管理、命名服务和集群...

服务器密码错误被锁定怎么解决(服务器密码错几次锁)

#服务器密码错误被锁定解决方案当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:##一、确认锁定状态###1.检查账户锁定状态(Linux)```bash#查看账户锁定...

zk基础—4.zk实现分布式功能(分布式zk的使用)

大纲1.zk实现数据发布订阅...

《死神魂魄觉醒》卡死问题终极解决方案:从原理到实战的深度解析

在《死神魂魄觉醒》的斩魄刀交锋中,游戏卡死犹如突现的虚圈屏障,阻断玩家与尸魂界的连接。本文将从技术架构、解决方案、预防策略三个维度,深度剖析卡死问题的成因与应对之策,助力玩家突破次元壁障,畅享灵魂共鸣...

取消回复欢迎 发表评论: