写点什么

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

评论

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

Flutter 2.0的路由把我搞蒙了!!!

岛上码农

flutter 路由 移动端开发 4月月更 跨平台开发

腾讯阿里工程师所热衷的DPDK到底是个什么东西?该如何学习?

Linux服务器开发

Linux服务器开发 DPDK C++后台开发 Linux后台开发 虚拟化技术

GraphScope v0.12.0 版本发布

6979阿强

大数据 图计算 GraphScope 图分析 图数据

jupyter notebook换皮肤

Peter

Python 机器学习 数据分析 Jupyter Notebook

通过质量内建,提高交付质量

老张

软件测试 质量内建 交付质量

ThreadLocal理解及使用

Rubble

4月日更 4月月更

用 GraphScope 像 NetworkX 一样做图分析

6979阿强

大数据 图计算 GraphScope 图分析 图数据

使用 Helm 部署 GraphScope

6979阿强

大数据 图计算 GraphScope 图分析 图数据

基于机器学习算法的钢材缺陷检测分类

Peter

Python 决策树 随机森林 集成学习 LightGBM

linux之chroot命令

入门小站

Linux

大厂工程师所热衷的DPDK到底是个什么东西?

赖猫

Linux 网络协议栈 DPDK

Python 报错 ValueError list.remove(x) x not in list 解决办法

AlwaysBeta

Python 编程

在 K8s 上运行 GraphScope

6979阿强

大数据 图计算 GraphScope 图分析 图数据

深入浅出 Ext4 块和 Inode 分配器的优化(上)

焱融科技

云计算 高性能 文件存储 文件系统

“双碳”强风吹拂:数据中心的绿色改革图谱

脑极体

在线CSV转Excel工具

入门小站

工具

一文带你搭建RocketMQ源码调试环境

悟空聊架构

RocketMQ 4月日更 悟空聊架构 4月月更

基于卷积神经网络的猫狗识别

Peter

机器学习 深度学习 tensorflow keras

[Day14]-[动态规划]四键盘问题

方勇(gopher)

LeetCode 数据结构与算法、

Docker容器简介、优缺点与安装

乌龟哥哥

4月月更

Docker 实战教程之从入门到提高(三)

汪子熙

Docker 容器 虚拟化 容器镜像 4月月更

在线IEEE浮点二进制计算器工具

入门小站

工具

读《Software Engineering at Google》(03)

术子米德

架构师成长笔记

读《Software Engineering at Google》(04)

术子米德

架构师成长笔记

从安装到编译: 10分钟教你在本地使用和开发GraphScope

6979阿强

大数据 图计算 GraphScope 图分析 图数据

企业如何进行信息化

秋去冬来春未远

数字化 信息化管理 如何信息化 信息化规律

TypeScript基础学习

乌龟哥哥

4月月更

自己动手写Docker系列 -- 5.7实现通过容器制作镜像

Go Docker 4月月更

图计算 101:图计算的类型、语言与系统

6979阿强

大数据 图计算 GraphScope 图分析 图数据

万字长文:直击关于Docker所必须了解的知识

穿过生命散发芬芳

Docker 4月月更

seaborn绘制箱型图

Peter

可视化 数据可视化 seaborn

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