2025 年技术指引:让真实案例和经验为开发者开路 了解详情
写点什么

Azul Systems 推出 Falcon,一个基于 LLVM 的新的 Java 即时编译器

  • 2017-05-11
  • 本文字数:1708 字

    阅读完需:约 6 分钟

近日, Azul Systems 发布了 Zing 17.03。该版本完全支持 Azul 基于 LLVM 的新的 Java 即时(JIT)编译器 Falcon。该编译器设计用来取代 Zing 先前版本以及 Oracle HotSpot 和 OpenJDK 使用的 C2 编译器。Falcon 是 1997 年 JavaOne 大会推出 C2 以来 Java SE 的第一个新的生产用 JIT 编译器。

LLVM 是一个现代化的开源编译器框架,也是 Swift、Rust 等许多新语言首选的后端“引擎”。它获得了学术界的大力支持,并且拥有包括 AMD、Apple、Cray、IBM、Intel、 Microsoft、Sony 和 SAP 在内的众多商业支持者。广泛的支持可以帮助它充分利用新的服务器硬件和新的指令集,它经常利用新的处理器技术,如Intel 的Broadwell 和Skylake 处理器提供的矢量化和加密优化,早在其他语言之前提供这种支持。

Azul 首席执行官 Gil Tene 告诉 InfoQ:

使用 LLVM 为我们提供了巨大的优势,数以百计的人对它进行优化,让它与最新的处理器能力保持同步,这些成果可以立即应用到 Java 代码上。

关于这一点,一个简单具体的例子是,Falcon 已经使用 Intel 最新的 CPU(例如,当前 Broadwell Intel E5-v4 服务器上的 AVX2 指令集)所提供的最新 / 最棒的矢量指令功能来优化常规的 Java 循环。由于 AVX2 增加了谓词矢量运算能力,所以 Falcon 能够在循环(例如,“将数组中的偶数相加”)中矢量化在之前的硬件上无法矢量化的谓词操作,因此,同样的 Java 类在较新的服务器上执行速度更快。[目前]HotSpot 甚至都没有试一下……

但最重要的是,我们获得了这种好处,不是通过一群 Azul 工程师花时间进行矢量化优化以及选择恰当的方法匹配每一种处理器。举例来说,我们是从 Intel 过去两年的投入以及他们将这些优化贡献给 LLVM 获益的。他们的贡献已经应用到了 C/C++/Clang/Rust,就像(现在)应用到 Java 一样。

Falcon 让我们可以做一些很酷的、JVM 相关的优化,而使用 C2 则无法应用这些优化。GC 屏障相关的优化就是其中的一个例子。此外还有更高层次的语言优化。关于更高层次的优化,一个具体的例子是,我们用较少的投入就在 Falcon 中引入了针对“真正 final”字段的优化,在 C2 中引入的话,投入要多得多。[实例 final 字段的挑战在于,它们可能不是“真正 final”的,因为反射和 Unsafe 可以重写它们,而且经常这样做]。Falcon 能够优化 Java 中使用实例 final 字段的操作,它所采用的方式是以前的 JIT 不曾做过的(例如,将数组范围检查提取到循环之外)。过去的几年里,在 HotSpot 和 Zing 中,这一特性一直处于原型模型开发阶段(在 OpenJDK 的部分邮件列表中可以找到相关讨论),但之前从没有在哪个 JVM 中实现产品化,其中有一部分原因是让 JIT 编辑器处理得很好复杂度很高。

有鉴于此,Falcon 在新硬件上性能超过 C2 就不奇怪了。例如,Tene 告诉 InfoQ,在特定的加密负载基准测试中,它比 Oracle HotSpot 快 3.5 倍,比 Oracle HotSpot 使用基于 Skylake 的服务器(Intel Xeon E5-xxxx)进行 Cassandra 基准测试快大约 10%。另外,在低延迟环境中,它也比 Zing 以前的版本快许多。按照 Tene 的说法,一个运行交易基础设施的 Azul Zing 客户观察到了大约 18~24% 的速度提升。

Azul 是第一个在生产级托管运行时中使用 LLVM 的组织。为了完成这项工作,LLVM 借助 Azul 提供的其他功能进行了增强,包括安全点和 GC 屏障方面的优化,提供 JIT 代码替换和逆优化的能力,包括隐式 null 检查、预测去虚拟化及保护内联在内的预测运行时优化。

如你所料,Falcon 还支持 Azul 在 2014 年推出的 ReadyNow 技术。按照设计,ReadyNow 是为了避免 Java 虚拟机“预热”,鉴于 JVM 有足够的时间学习哪些代码要编译成机器级,应用程序所有者试图通过这种方法充分利用 JIT 编译器优化。

现有用户可以从 Zing 支持门户上直接下载 Zing 17.03。Azul 网站上也提供了 Zing 新版本的 30 天试用。Zing 单许可的全年订阅价为每台服务器 3500 美元,大量许可长期订阅价格会低许多。

5 月 4 日,太平洋时间上午 11 点,Azul 首席技术官 Gil Tene 举办了一场题为“走进Falcon 编译器”的网络研讨会。研讨会加Q&A 持续了约一小时。

查看英文原文 Azul Systems Launches Falcon, a New Just-in-Time Compiler for Java, Based on LLVM

2017-05-11 19:003350
用户头像

发布了 1008 篇内容, 共 394.3 次阅读, 收获喜欢 345 次。

关注

评论

发布
暂无评论
发现更多内容

QCA9880+MT7915 mini pcie card chip difference

wifi6-yiyi

wifi5

LLaVA:将视觉微调引入大模型

Zilliz

计算机视觉 LLM 大语言模型 模型微调

提升 API 可靠性的五种方法

高端章鱼哥

测试 API API网关

九科信息中标招商局集团流程挖掘项目

九科Ninetech

飞桨AI for Science线下交流会:汇聚科学计算人才,携手共建繁荣社区

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

虚幻引擎教程——生成云平台指定路径下的EXE文件

3DCAT实时渲染

虚幻引擎 ue UE虚幻引擎

借助Databuff,快捷构建Kubernetes可观测能力

乘云数字DataBuff

利用增强现实技术辅助跨国传输大文件的优化

镭速

减少跨国传输大文件所需时间的技巧与工具

镭速

跨国传输大文件

上传了ipa但iTunes Connect没有构建版本问题

雪奈椰子

酒有十千,棋有独步——本土大模型百花齐放,文心一言站稳领先者身位RlueEva-System大模型测评来了!你pick哪一家

TE智库

Docker学习路线9:运行容器

小万哥

c++ Docker 运维 后端 开发

DTT直播回顾:一文带你全面了解openGemini

华为云开源

时序数据库 开源数据库 openGemini

阿里云瑶池 PolarDB 开源官网焕新升级

阿里云数据库开源

polarDB PolarDB-X PolarDB-PG 阿里云PolarDB

异步 I/O 探秘 —— 为什么说 Go 为我们提供了同步的网络编程接口 ?

蓬蒿

golang 异步IO asynchronous i/o netpoller

永续期权合约交易所系统开发案例(成品)

薇電13242772558

交易所

算网深度融合成趋势,天翼云让政企上云更安全、更便捷!

天翼云开发者社区

云计算 云平台

阿里云中“间“力量!RocketMQ

指剑

阿里云 RocketMQ 函数计算FC 事件总线Eventbridge

Flink SQL 双表 JOIN 介绍与原理简析

腾讯云大数据

流计算 Oceanus

案例 | 基于机理模型驱动的工业APP集成开发平台及应用实践

工赋开发者社区

打翻夏日调色盘,华为与你多巴胺一“夏”

最新动态

唯一一家!国际测评:文心大模型3.5总分第一,算法模型第一,行业覆盖第一

飞桨PaddlePaddle

人工智能 百度 大模型 文心一言 文心大模型

【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(系统底层优化篇)

洛神灬殇

MySQL 性能调优 技术分析 底层分析

陈毅威“掌舵”SUSE 中国 3.0,谋势数字江湖

Rancher

一步一图带你构建 Linux 页表体系 —— 详解虚拟内存如何与物理内存进行映射

bin的技术小屋

内存管理 Linux Kenel Linux内核 页表 Linux内核源码

一些可以极大提高工作效率的 Linux 命令

互联网工科生

Linux 自动化运维

MegEngine Python 层模块串讲(上)

MegEngineBot

Python 深度学习 开源 Data

喜报!天翼云电脑获“光华杯”大赛一等奖、最佳创意创新奖!

天翼云开发者社区

云计算 云电脑

玩一玩编程式 AOP

江南一点雨

Java spring

PPT | 未来工厂与数字孪生

工赋开发者社区

Azul Systems推出Falcon,一个基于LLVM的新的Java即时编译器_Java_Charles Humble_InfoQ精选文章