写点什么

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:119531
用户头像

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

关注

评论

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

小公司如何做好项目管理工作?管理者的实战经验

易成研发中心

项目管理 程序员 项目软件管理

万界星空科技装备制造业MES解决方案

万界星空科技

mes 万界星空科技mes 装配行业 装配制造业 装配行业MES

TiDB v8.5 LTS 新版本解密

TiDB 社区干货传送门

数据库前沿趋势 8.x 实践

SqlServer 到 TiDB(DATAX)

TiDB 社区干货传送门

百度多模态大模型内容安全解决方案获WitAwards 2024年度大奖

百度安全

广告行业需要用到堡垒机的几个原因分析-行云管家

行云管家

广告 等保 等保测评

【GreatSQL优化器-02】索引和Sargable谓词

GreatSQL

电子电器组装行业MES系统解决方案

万界星空科技

mes 万界星空科技mes 电子mes 电子行业 电子电器行业

SQL Server 迁移到 TiDB

TiDB 社区干货传送门

从 MongoDB 迁移到 TiDB

TiDB 社区干货传送门

数据规模超 1PB !揭秘网易游戏规模化 TiDB SaaS 服务建设

TiDB 社区干货传送门

集群管理

我们是如何实现 TiDB Cloud Serverless 的 - 成本篇

TiDB 社区干货传送门

TiDB Cloud

空壳产品之路:直面自身的缺点

iofomo

产品 设计 工具 摸鱼 微信分身

鸿蒙Navigation拦截器实现页面跳转登录鉴权方案

龙儿筝

鸿蒙

Linux 文件处理命令:掌握文件管理的利器

测试人

软件测试

从 Oracle 迁移到 TiDB (OGG)

TiDB 社区干货传送门

基于 TiDB Vector 开发的 TiDB AI 小助手上线啦!招募 200 名试用体验官,开启高效问题解决之旅

TiDB 社区干货传送门

金字塔原理:解决问题的高效思维框架

易成研发中心

项目管理 金字塔原理

淘宝商品详情API:如何通过商品ID获取全面信息

代码忍者

API 接口 pinduoduo API

智源六周年 | 矢志星海,奋楫争先

智源研究院

安徽等级保护测评机构名单【2025】

行云管家

等保 等保测评 安徽

从 DB2 迁移到 TiDB (CDC)

TiDB 社区干货传送门

电脑重装系统后硬盘数据可以恢复吗?系统重装后以前的文件怎么找回来?

阿拉灯神丁

EasyRecovery 数据恢复软件 电脑 备份 & 恢复 系统还原

探究亚马逊详情API接口:开发与应用

科普小能手

API API 接口 亚马逊API 亚马逊商品详情API 亚马逊API接口

一文解读GaussDB(DWS)监控运维诊断优化能力

华为云开发者联盟

sql 数据仓库 GaussDB

TiDB数据库的垃圾回收机制

TiDB 社区干货传送门

监控 管理与运维

从模型到应用,大模型产业落地进入加速期

极客天地

星辰资讯 | TiDB v7.5.4 & v8.4.0 发版

TiDB 社区干货传送门

版本升级

利用官方授权API接口item_get_app,深度挖掘淘宝/天猫APP商品详情数据

代码忍者

API 接口 pinduoduo API

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