写点什么

ART 云配置文件,提高安卓应用的性能

  • 2019-04-12
  • 本文字数:929 字

    阅读完需:约 3 分钟

ART云配置文件,提高安卓应用的性能

安卓在版本 Pie 中第一次引入了ART优化配置文件,这个新特性利用发送到 Play Cloud 的数据大大缩短了应用在安装或更新后的启动时间。根据谷歌公布的数据显示,应用的启动速度平均提高了 15%,最优情况下可达到 30%。


从版本 Nougat 开始安卓就已经使用 PGO(Profile guideed Optimization-性能分析引导优化)来优化其运行时。这项技术能够动态剖析应用的内存和存储使用情况,并识别出热区代码。PGO 的缺点是它只能依赖单个设备或用户的数据,这使得优化过程非常缓慢。通过 Play Cloud 来整合更多用户和设备的数据,ART 性能分析明显加快了这个优化过程,而且还可以反过来把优化结果应用到所有用户。


很多情况下,开发者会逐步推出他们的应用,比如在正式版之前会发布不同的测试版本,而这时候上述优化就变得更加有用。它使我们在初始测试阶段就可以对应用进行剖析,确定热点代码和优化选项,从而让以后的用户可以直接获益。


为实现这种机制,ART 在 Play Cloud 中的剖析阶段产生了一个核心代码配置文件,这个文件包含了很多匿名的聚合数据,例如,最常用代码的路径、启动时加载的类以及启动时和启动后要执行的代码等相关信息。代码配置文件在 Play Cloud 中以“.deb”格式的元文件存在,元文件可以直接安装到设备,并且对开发人员完全透明。


利用代码配置文件中的信息,谷歌采取了一系列技术来提高应用的性能,包括应用镜像、代码预编译以及字节码重新布局等。


应用镜像是应用启动时所使用的预初始化类的内存映射。在应用启动时,镜像将会直接映射到堆内存。类似地,应用启动时也开始执行代码预编译的目标字节码。字节码是经过预编译和优化的,因此大大节省了 JIT 编译器的工作时间。最后,字节码重新布局是为了保持应用启动时使用的代码能够尽可能紧凑,这样应用启动后代码可以立即执行,从而节省了加载时间。


正如前面所提到的,根据谷歌的统计数据,在经过 ART 性能分析优化之后,应用的平均启动时间提高了 15%,很多应用甚至提高了 20%。该数据显示,除了谷歌自己的应用,还有超过 30000 个外部应用也有所改进。


未来,谷歌将向所有开发者开放 ART 性能优化信息,这样开发者就能够基于用户的真实性能数据来改进他们的应用了。


查看英文原文ART Cloud Profiling to Improve Android App Performance


2019-04-12 08:004366

评论

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

菜鸟工程师的超神之路 -- 从校园到职场

极客思享

极客时间架构 1 期:第 3 周代码重构 - 学习总结

Null

架构训练营-week4-作业

于成龙

作业 架构训练营

手把手教你锤面试官 02——设计模式轻松答

慵懒的土拨鼠

Java 面试 设计模式

基于 Spring Boot 的企业级快速开发框架 BDF3

木香丘

架构 Spring Boot 可视化 后台管理系统

如何高质量学习与正确运用设计模式

木香丘

学习 设计模式 实战

区块链更多典型落地应用即将涌现

CECBC

区块链 落地应用

阿里互联网神话,超级工程双十一如何打造终于开源了(共4篇)

小Q

学习 架构 面试 算法 阿里

惊艳!腾讯微软内部5大算法文档+源码,大厂offer拿到手软

小Q

学习 架构 数据结构 面试 算法

甲方日常 26

句子

生活 随笔杂谈 日常

技术人为什么该坚持写作?

极客思享

week03总结

xxx

共享服务中心建设原则-《企业IT架构转型之道-阿里巴巴中台战略思想与架构实战》

Man

中台 研发管理 DDD

在互联网站上怎么准确分辨别出MG平台真假VX(LGF7998)黑网的验证方法?

InfoQ_6b6a6317a692

LeetCode题解:429. N叉树的层序遍历,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

区块链即将涌现更多典型落地应用

CECBC

区块链 落地应用

时空停滞

Sean

调试 心得

算法岗有没有泡沫

极客思享

week03作业

xxx

java安全编码指南之:方法编写指南

程序那些事

java安全编码 java安全 java安全编码指南

中小企业如何启动产品科普直播?

boshi

内容 营销 直播 企业应用

白玉试毒 | 灰度架构设计

九叔(高翔龙)

架构设计 互联网架构设计 灰度 灰度发布 发布流程

spring-boot-route(八)整合mybatis操作数据库

Java旅途

Java Spring Boot mybatis

演化过程中的技术与业务双驱引擎

boshi

云计算 架构 中台 成长 数字化

使用 jsDelivr 免费加速 GitHub Pages 博客的静态资源(二)

mzlogin

jsDelivr CDN Jekyll GitHub Pages 个人博客

可穿戴的“舌头鼠标”,催生“黏腻”人机交互的新想象?

脑极体

第8周作业

Vincent

极客时间 极客大学

「架构师训练营第 1 期」第三周作业

张国荣

那个百无一用的技术主管

极客思享

《我想进大厂》之MQ夺命连环11问

艾小仙

kafka 面试 MQ 程序语言

第8周总结

Vincent

极客时间 极客大学

ART云配置文件,提高安卓应用的性能_移动_Sergio De Simone_InfoQ精选文章