写点什么

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

评论

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

去美元化浪潮下:加密货币的机遇与挑战

区块链软件开发推广运营

交易所开发 链游开发 NFT开发 公链开发 代币开发

Java进阶:HashMap底层原理(通俗易懂篇)

快乐非自愿限量之名

Java 前端 开发语言

按图搜索的实时性:阿里巴巴拍立淘API返回值的快速响

技术冰糖葫芦

api 网关 API Gateway API 文档 API 测试 pinduoduo API

数字化转型背景下低代码开发模式变革的研究

不在线第一只蜗牛

低代码 数字化

面试官:说说停止线程池的执行流程?

不在线第一只蜗牛

Java 面试

通义灵码获得国产 AI 编码工具最高成绩丨阿里云云原生 8 月产品月报

阿里巴巴云原生

阿里云 云原生 通义灵码

通义灵码企业代码补全增强使用实践

阿里巴巴云原生

阿里云 云原生 通义灵码

从低代码到AI赋能,企业科技创新的下一个风口

天津汇柏科技有限公司

低代码 AI 人工智能

BOE(京东方)领先科技赋能体育产业全面向新 以击剑、电竞、健身三大应用场景诠释未来健康运动新生活

科技汇

Karmada v1.11 版本发布!新增应用跨集群滚动升级能力

华为云原生团队

云计算 容器 云原生 Karmada

国科云域名解析课堂:一个域名可以解析到多个IP地址吗?

国科云

通义灵码企业代码补全增强使用实践

阿里云云效

阿里云 云原生 通义灵码

掌握 C++17:结构化绑定与拷贝消除的妙用

不在线第一只蜗牛

c++

面试官:线程池遇到未处理的异常会崩溃吗?

王磊

构建智能电商系统:京东商品详情API返回值是关键

技术冰糖葫芦

api 网关 API Gateway API 文档 pinduoduo API

openGemini 社区人才培养计划:助力成长,培养新一代云原生数据库人才

华为云开源

时序数据库 开源社区 openGemini 华为云开源

“软件驱动未来·数字闪耀金陵”2024南京软博会,官宣定档!

AIOTE智博会

软件博览会 软件展会 软博会 南京软博会

面试官:如何打破双亲委派机制?

快乐非自愿限量之名

从孤岛到协同,集成式财务规划的未来

智达方通

业财融合 全面预算管理 财务管理 财务预算

哈银消金以普惠金融服务助力假期经济

Geek_2d6073

Flink全新周边正式上线!议题征集正在进行中!

Apache Flink

大数据 flink 实时计算 Apache Flink FFA

高效数据移动指南 | 如何快速实现数据库 MySQL 到 MongoDB 的数据同步?

tapdata

MySQL mongodb mysql数据同步 mongodb数据同步工具 mysql同步到mongodb

JAVA基础之5-函数式接口的实现

EquatorCoco

Java window

不想一直走前端,试试产品吧

高端章鱼哥

基于低代码平台的合同管理系统开发

EquatorCoco

摊牌了!一文教会你轻松上手豆包MarsCode 编程助手!

豆包MarsCode

人工智能 AI 代码 教程 分享工具

电子签名软件分析:大家常用的9款对比

爱吃小舅的鱼

软件开发

软件测试学习笔记丨Charles 实战

测试人

软件测试

皮阿诺七星服务,提升家居定制新体验

新消费日报

BTC ETF资金流入暴涨400%,市场下一步将如何发展?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

实现多线程的方式有哪些?

秃头小帅oi

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