写点什么

Android 将引入 AOT 编译器

  • 2014-07-14
  • 本文字数:1129 字

    阅读完需:约 4 分钟

Google 已经用一个 AOT 编译器替代了 Android 中的 JIT 编译器。这个 AOT 编译器可以在安装阶段把字节码转换成原生的机器码。

2014 年的 I/O 大会上,Google 发布了下一代 Android 操作系统,代号“L 版本”,这个版本有一些重大的系统架构方面的修改,其中之一就是用一个全新的运行时库,就叫 Anroid RunTime(ART)以及 AOT 编译器替代了 Dalvik 虚拟机和它的 JIT 编译器。

在不同的条件下,AOT 和 JIT 编译策略具有不一样的优势和缺点。Google 实现的 ART 保持了 JIT 编译策略对硬件的灵活性,同时调整了 JIT 对于空间和速度的取舍。这种 AOT 策略是针对 Android 使用的硬件平台优化的。其他移动平台针对它们的硬件和软件环境,会有不同的选择。

  • iOS 主要依靠静态编译,在开发者的电脑上,构建过程会产生优化过的原生指令,然后直接上传这个应用。
  • Windows Phone 使用云编译策略,安装时应用商店会先生成那些依赖于具体硬件的指令,然后再把应用安装到手机上。

这两种策略分别是这两家公司针对自己情况的最优选择,苹果紧紧地控制着硬件生态系统,而微软的系统则有着五花八门的硬件执行环境。

在这个新的 Android 运行时库的实现中,操作系统在应用安装的时候,直接在设备上把字节码转换成机器码,并把这些原生的指令存储起来,以备今后使用。无论是在永久存储区域还是内存方面,这份原生指令都会占更大的空间。和 Dalvik 加传统的 JIT 编译器相反,每次应用执行的时候不需要重复这个编译过程。

但 ART 也丧失了 JIT 编译的一个关键优势:在手机、平板电脑或其他设备上安装应用程序的时候,操作系统只有知道底下运行的硬件细节,才能把应用转换成原生的机器码。它知道硬件是不会变的,所以才能针对这种硬件产生最优的指令。这和静态编译器形成了鲜明的对比,静态编译器通常不会针对特定的处理器做优化,也不会为不同的处理器产生多份指令。

Google 声称 ART 总体上能把性能提高到 Dalvik 的 200%,这部分是因为 AOT 编译器对指令的全貌有一个概览,而 JIT 编译器只执行本地优化。Andre Frumusanu 在为 AnandTech 网站写的文章中指出“异常检查等带来的开销大大减少,方法和接口调用的速度极大地提升了”。

因为 ART 编译出来的是一个 ELF 可执行文件,所以内核可以管理它的代码页——这个结果可能会大大改进内存管理,并且降低内存使用。

Android L 现在有一个开发者预览版,正式版预计将在秋天发布,所以最终能提升到什么程度,以及是否会有更多的取舍,还要拭目以待。这个版本在通用的编译方面看起来并没有多大进步,Google 对此并没有什么新计划,也没有在跟踪这件事。随着硬件功能的不断进步,Google 不断关注的是针对Android 特定硬件的优化编译策略。

参考原文链接: http://www.infoq.com/news/2014/07/ahead-of-time-compiler-os

2014-07-14 04:119649
用户头像

发布了 77 篇内容, 共 40.3 次阅读, 收获喜欢 26 次。

关注

评论

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

2023年双11大促,华为云耀云服务器最佳抄底时间来袭!

YG科技

开源埋点分析系统:洞察用户行为的新视角

ClkLog

开源 埋点 用户行为分析 用户分析 埋点框架

Amazon EC2 新手初探:初始设置之密钥对

王强

亚马逊云服务 Amaozn EC2

通过Python脚本支持OC代码重构实践(三):数据项使用模块接入数据通路的适配

百度Geek说

Python 自动化 重构 脚本 企业号11月PK榜

第五期 |《实时洞察 智能运营一用友企业绩效管理白皮书》解读

用友BIP

企业绩效

2024上海国际智能驾驶技术展览会

AIOTE智博会

自动驾驶展 智能驾驶展

理解技术和业务的共同目标

老张

质量保障 业务目标 技术目标

企业、政府单位及公共组织办会,一键高效合规直达酒店!

用友BIP

企业数智化

从职场到创业,请查收华为云这份高效创业指南

YG科技

Kubernetes 漫游:理解 ConfigMap

Phoenix

Kubernetes, 云原生, eBPF

为React Ant-Design Table增加字段设置 | 京东云技术团队

京东科技开发者

前端 React Ant Design 企业号11月PK榜 前端组件

云渲染的“公”“私”技术!

Finovy Cloud

渲染 云渲染 元宇宙 云渲染农场 动画制作

推荐一个适合小公司的自动化部署脚本

秃头小帅oi

程序员 自动化部署

苹果超好用的Markdown文本编辑器:Ulysses for Mac最新激活 支持M1

彩云

文本编辑器 Ulysses

英特尔CEO:以“系统级代工”满足“芯经济”时代客户需求

E科讯

Dapp技术开发介绍

区块链技术

Android下Linux创建进程的姿势(下)

江湖修行

android Linux Kenel 移动端 #面试 #前端

走进中国近代工业摇篮,探索业财融合领先实践

用友BIP

业财融合

服务器硬盘选机械还是固态

Geek_f19a80

服务商

用友与清华合力赋能,提升大型企业数智化领导力!

用友BIP

企业数智化

Sonoma Cache Cleaner for Mac 苹果系统优化工具

彩云

Sonoma Cache Cleaner 系统优化工具

2023双十一爆单攻略,中小跨界商家别错过华为云捞金最佳机遇.

YG科技

同程面试:说一下多态的实现原理?

王磊

Java 面试 java面试

Amazon EC2 新手初探:初始设置之创建安全组

王强

Amazon EC2 亚马逊云服务

promise时效架构升级方案的实施及落地 | 京东物流技术团队

京东科技开发者

架构 重构 Promise 架构升级 企业号11月PK榜

WorkPlus移动数字化平台,助力企业全面掌控业务和生态

BeeWorks

Java基础面试题【分布式】Kafka

派大星

Java 面试题

浅谈仓储UI自动化之路 | 京东物流技术团队

京东科技开发者

测试 自动化测试 UI自动化测试 企业号11月PK榜

对话在行人|新漢智能:基于用友BIP共创智能解决方案,使能中企全球化

用友BIP

数智化领先实践 中企全球化

火山引擎ByteHouse:4000字总结,Serverless在OLAP领域应用的五点思考

字节跳动数据平台

数据库 大数据 云原生

Android将引入AOT编译器_移动_Seth Cousins_InfoQ精选文章