AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

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

评论

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

极客时间运维进阶训练营第二周作业

Starry

Java | Collection集合

陌上

Java 编程 10月月更

10:子查询-MySQL

Yeats_Liao

数据库 后端 10月月更

Go语言入门09—结构体

良猿

Go golang 后端 10月月更

服务怎么升级

agnostic

服务升级

QECon上海站|蚂蚁测试用例智能生成技术架构与实践

TRaaS

AI读懂中国,文心方可雕龙

脑极体

流式计算引擎对比

穿过生命散发芬芳

10月月更 流式计算

Java | Collection集合的子类

陌上

Java 编程 10月月更

C++从入门到精通(第七篇) :string类的讲解和模拟实现

雪芙花

c 10月月更 C++

Mimir 速体验 (Part 4):数据抓取的高可靠

Grafana 爱好者

Grafana Prometheus Mimir

Mimir 速体验 (Part 5):原生 OTLP 数据写入

Grafana 爱好者

Grafana OpenTelemetry Mimir

6000字带你揭开ICT和云计算技术的神秘面纱!

wljslmz

云计算 ICT 以太网 10月月更

JavaScript基础部分能力提升以及解答方案

木偶

JavaScript 前端 10月月更

前端开发-初始HTML

木偶

html 前端 10月月更

基于 docker 实现对容器的 CPU 和内存的资源限制

忙着长大#

Docker 镜像

嵌入式 Linux 入门(九、Linux 下的磁盘管理)

矜辰所致

Linux 10月月更 磁盘管理

虚拟化资源监控

阿泽🧸

10月月更 虚拟化监控

半小时看懂互联网运营,学会做局与破局

蔡农曰

运营 互联网+ 互联网行业 互联网运营

11:高级部分-MySQL

Yeats_Liao

数据库 后端 10月月更

【一Go到底】第三十一天---查找

指剑

Go golang 10月月更

【精彩内容分享】SoCC 2022 | 大规模云系统自动化容量评估的探索与落地 – DeepScaling

TRaaS

Nest.js初步学习

木偶

Express nestjs 10月月更

Java | Map集合

陌上

Java 编程 10月月更

2022-10-30:给你一个长度为 n 的整数数组 rolls 和一个整数 k 。 你扔一个 k 面的骰子 n 次,骰子的每个面分别是 1 到 k , 其中第 i 次扔得到的数字是 rolls[i]

福大大架构师每日一题

算法 rust 福大大

【笔记】面向过程的SQL扩展(一)

w010w

数据库 sql 10月月更

http 协议 harbor 镜像仓库部署

忙着长大#

9:多表查询-MySQL

Yeats_Liao

数据库 后端 10月月更

【点滴】生活模型

无人之路

个人成长 日志 模型思维

远程代码执行漏洞

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

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