写点什么

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

评论

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

程序员指南|学会与大模型相处,提升个人开发效率

飞算JavaAI开发助手

程序员 软件开发 人工智能「 ChatGPT

2023中关村论坛系列活动——英特尔智能医疗健康创新合作论坛在京成功举办

E科讯

让公有云服务“宁安如梦”的“定心丸”在哪里?

轶天下事

如何在淘宝的item_search_seller API中获取店铺列表?

技术冰糖葫芦

API 文档

idea如何新建一个多模块的springCloud项目

javaNice

Java SpringCloud

低代码PaaS开发平台

树上有只程序猿

低代码 PaaS 私有化部署

2023 IoTDB Summit 应用实例议题详解 | 报名到场即送卫衣!

Apache IoTDB

当前各类厂商纷纷入局低代码赛道,关于低代码未来的发展前景如何?

代码生成器研究

透过一台电视,看到万家星闪

脑极体

通信

剧情继续:马斯克曝出OpenAI前员工举报信,董事会与奥特曼谈判回归

Openlab_cosmoplat

JD-GUI 反编译jar包

javaNice

Java

开源之夏 2023 | Databend 社区项目总结与分享

Databend

编程新手如何提高编程能力?

代码生成器研究

低代码究竟能干什么?

代码生成器研究

企业如何选择一款高效的ETL工具

谷云科技RestCloud

ETL

2024年企业软件定制开发必须了解的4大趋势

飞算JavaAI开发助手

数字化转型 企业 定制软件开发 技术服务

如何获取item_search_guang API中与“爱逛街”相关的API接口?

技术冰糖葫芦

API 文档

低代码:数字化转型趋势下的快速开发方式

互联网工科生

低代码 数字化

HashMap HashTable ConcurrentMap 中key value是否可以为null

javaNice

Java

埃森哲使用 Amazon CodeWhisperer 助力开发人员提高工作效率

亚马逊云科技 (Amazon Web Services)

Java Python 人工智能 S3 Amazon CodeWhisperer

C++ LibCurl实现Web指纹识别

不在线第一只蜗牛

c++ 编程 web socket LibC

软件测试/测试开发丨人工智能时代软件测试的变化

测试人

人工智能 软件测试

智能监控,高效观测 IT 系统瓶颈

观测云

IT 智能监控

专访|OpenTiny 开源社区 常浩:完成比完美更重要

OpenTiny社区

开源 Vue 前端 富文本编辑器

AppLink结合金蝶云星空作订单信息同步流程

谷云科技RestCloud

零代码 APPlink

编程到底难在哪里?

代码生成器研究

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