NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

玩转“擎舵”,秒变AIGC时代营销创意“掌舵人”

Geek_2d6073

为什么越来越多的网站选择海外主机跨越国界?

一只扑棱蛾子

海外主机

山西等级保护测评机构有哪些?有几家?

行云管家

信息安全 等级保护 等保测评 等级测评 山西

5G与妈祖守护的那片海

脑极体

5G

软件测试/测试开发丨Selenium的常用元素定位方法

测试人

Python 软件测试 自动化测试 测试开发 selenium

了解Java可见性的本质

阿里技术

Java java 编程

解决ueditor表格拖拽没反应的问题

互联网工科生

数据库 Vue

制造业用哪款堡垒机好一点?为什么?

行云管家

网络安全 堡垒机 双因子认证 制造业

ABAQUS有限元分析软件吃CPU还是GPU比较多?

思茂信息

gpu cpu 显卡 ANAQUS 有限元分析

“多”维演进:智能编码的深度进化

阿里云视频云

云计算 编码 视频编码 视频云

ElasticSearch - 批量更新bulk死锁问题排查 | 京东云技术团队

京东科技开发者

elasticsearch MQ 企业号 7 月 PK 榜 BulkProcessor

人脸识别技术的精度提高及其应用

来自四九城儿

关于Java已死,看看国外开发者怎么说的

越长大越悲伤

Java 后端

数智驱动 百业共荣!亚信科技精彩亮相2023 MWC上海展

亚信AntDB数据库

数据库 AntDB AntDB数据库

手把手教你如何做手机PCB电磁兼容性设计

华秋PCB

电磁 PCB 电路板 电子 PCB设计

基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

袋鼠云数栈

sql flink 实时开发

5G与妈祖守护的那片海

白洞计划

5G

架构课模块一作业

庚小庚

如何用 TDengine 预测 “未来”

爱倒腾的程序员

涛思数据 tdengine 时序数据库

Spring Loaded代码热更新实践和原理分析 | 京东云技术团队

京东科技开发者

spring 热更新 Loader 企业号 7 月 PK 榜

【OpenAI】ChatGPT函数调用(Function Calling)实践 | 京东云技术团队

京东科技开发者

openai 数据交互 企业号 7 月 PK 榜 Function Calling

文盘Rust -- FFI 浅尝 | 京东云技术团队

京东科技开发者

rust C语言 企业号 7 月 PK 榜 FFI

分享实录 | NGINX 网络协议优化(下)

NGINX开源社区

nginx TCP TLS HTTP

人脸识别技术在智能家居中的应用

来自四九城儿

PoseiSwap 治理通证POSE登录PancakeSwap,开盘涨幅超2100%

西柚子

HDC开发者盛典 | 破解创业老板高效制果汁奥秘挑战!赢取代金券、按摩枕、收纳袋等礼品~

华为云PaaS服务小智

云计算 软件开发 华为云 华为开发者大会2023

GPU 容器虚拟化新能力发布和全场景实践

Baidu AICLOUD

GPU容器虚拟化

人脸识别技术的安全性和隐私保护

来自四九城儿

从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

研发质量指标大 PK:MTTR vs MTBF,谁是靠谱王?

LigaAI

高可用性 研发效能度量 MTTR 研发效能管理 企业号 7 月 PK 榜

[杂谈] 从PDF文件中进行表格抽取(tabula || paddle-pp-structure)

alexgaoyh

paddle 版式还原 表格提取 tabula pp-structure

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