写点什么

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:004266

评论

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

你不可不知道的Design Thinking

长沙造纸农

设计 思维方式 设计思维 设计实践 设计师

金九银十:搞定这两个GitHub标星50K开源项目,拿个30k轻松吧?

编程 程序员 面试 算法 架构师

2020年史诗级‘面试宝典’横空而出,金九银十就靠“它”涨薪了

学习 程序员 面试 架构师

面经手册 · 第10篇《扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法》

小傅哥

Java 数据结构 算法 归并排序 洗牌算法

Mac搭建本地koa2项目

靖仙

koa2 本地环境搭建

华为HMS:风雨突然,仍求自我

脑极体

机器学习及信息与认知的逻辑

superman

学习 认知提升 个人提升

如何基于 Flink 生成在线机器学习的样本?

Apache Flink

flink

Spring 5 中文解析核心篇-集成测试之TestContext(下)

青年IT男

单元测试 Spring5

记一次前端vue相关面试题目和简答案

靖仙

面试 Vue MVVM

5G加速商用,云通信如何推动企业营销数智化

阿里云Edge Plus

前端 10 问之 TypeScript (第一篇)

局外人

typescript 大前端

Elasticsearch之文档操作

北漂码农有话说

Flink SQL 1.11 新功能与最佳实践

Apache Flink

flink

GaussDB(DWS)应用实战:对被视图引用的表进行DDL操作

华为云开发者联盟

数据库 dll postgre

Apache Pulsar 社区周报|08-22 ~ 09-04

Apache Pulsar

开源 云原生 Apache Pulsar 消息系统 消息中间件

随笔文,关于”中台“ 的一些“小偏论”

松子(李博源)

大数据 数据中台 中台 数据平台

大厂面试爱问的「调度算法」,20 张图一举拿下

Java架构师迁哥

甲方日常 12

句子

工作 随笔杂谈 日常

详解增强算术赋值:“-=”操作是怎么实现的?

Python猫

Python 编程

第13周总结+作业

林毋梦

MySQL8.0大表秒加字段,是真的吗?

Simon

MySQL

Hadoop 客户端节点

yuanhang

hadoop3

中国移动张浩:AMQP on Pulsar 的设计与应用一览

Apache Pulsar

Apache 云原生 Apache Pulsar 消息中间件 AMQP

话题讨论 | 程序员们来说一说,你们从编程开始到现在共使用过多少种语言?

InfoQ写作社区官方

写作平台 话题讨论 语言

科普:Java 后端开发常用的 10 种第三方服务

沉默王二

Java 后端 第三方服务

MySQL中my.cnf的配置说明

Matrix Chan

运维 MySQ MySQL 运维 数据库运维

CDN百科11 | 如何用CDN加速OSS源站资源

阿里云Edge Plus

Git 中submodule的使用,终于有人说明白了

Java架构师迁哥

Redis-技术专题-Redis知识体系

码界西柚

作为一个架构师,我是不是应该有很多职责?

架构师修行之路

程序员 架构师

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