0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基准配置文件将应用启动时间缩短最高40%

谷歌开发者 来源:谷歌开发者 作者:谷歌开发者 2022-03-11 09:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

启动时间的重要性

应用性能和用户参与度的相关性在许多应用中都有所体现。用户希望应用响应迅速且能快速加载,而启动时间就是衡量应用性能和质量的主要指标之一。

我们的一些合作伙伴已经投入大量时间和资源来优化应用启动情况。例如,您可以阅读了解 Facebook 的优化历程。

本文我们将讨论基准配置文件和其改善应用和开发库性能的方式,包括它们如何将启动时间缩短了最高 40%。虽然本文侧重于应用启动,但是基准配置文件也可以极大改善卡顿情况。

回顾

Android 9 (API 级别 28) 在 Play Cloud 中引入了 ART 优化配置文件,以缩短应用启动时间。在云配置文件可用时,我们看到应用的冷启动在不同设备上平均快了至少 15%。

配置文件的工作原理

当应用在安装或更新后首次启动时,它的代码以解释模式运行,直到被 JIT。由于存储和加载完全编译的应用所需的开销较大,自 Android 6 开始,Java 和 Kotlin 代码在 APK 中编译为 dex 字节码,而不是完全编译为机器代码。应用中经常被使用以及用于应用启动的类和方法,都会被写入配置文件。一旦设备进入闲置模式,ART 就基于这些配置文件编译应用,以加快后续的应用启动。

从 Android 9 (API 级别 28) 开始,Google Play 也会提供云配置文件。当应用在设备上运行时,ART 生成的配置文件由 Play 商店应用上传并在云端聚合。为应用上传了足够的配置文件后,Play 应用将使用聚合的配置文件来进行后续的安装。

存在的问题

虽然云配置文件在可用时很有帮助,但并非总是在应用安装后即可使用。收集和聚合配置文件通常要几天时间,而许多应用会每周更新,这就是问题所在。而且许多用户会在云配置文件可用之前安装更新。Google Android 团队开始寻找其他方法来改善配置文件延迟。

解决方案

基准配置文件是提供配置文件的一个全新机制,可在 Android 7 (API 级别 24) 和更高版本上使用。基准配置文件是由 Android Gradle 插件生成的 ART 配置文件,使用可由应用和库提供的人类可读懂的配置文件格式。示例如下:‍

HSPLandroidx/compose/runtime/ComposerImpl;->updateValue(Ljava/lang/Object;)VHSPLandroidx/compose/runtime/ComposerImpl;->updatedNodeCount(I)IHLandroidx/compose/runtime/ComposerImpl;->validateNodeExpected()VPLandroidx/compose/runtime/CompositionImpl;->applyChanges()VHLandroidx/compose/runtime/ComposerKt;->findLocation(Ljava/util/List;I)I

二进制文件存储在 APK 资源目录中的特定位置 (assets/dexopt/baseline.prof)。

基准配置文件在构建时创建,作为 APK 的一部分发送到 Play 中,然后在下载应用时,从 Play 发送至用户。基准配置文件在云配置文件尚不可用时,填补了 ART 云配置文件流水线中的空白,在云配置文件可用时,则会自动与其合并。基准配置文件最大的优势之一是可以在本地开发和评估,这样开发者可以看到真实的最终用户性能改进情况。它们还支持较低的 Android 版本 (7 和更高版本),而云配置文件只在 Android 9 及以上版本中提供。

影响

应用开发者

2021 年初,Google 地图的发布周期从两周改为一周。更频繁的更新意味着更频繁地舍弃本地预编译,以及更多用户在没有 Play Cloud 配置文件的情况下,遇到启动缓慢的情况。通过使用基准配置文件,Google 地图将平均启动时间缩短了 30%,搜索速度相应增长了 2.4%,对于这样一个成熟的应用来说,这是巨大的性能改进。

库开发者

库中的代码与应用中的代码类似,默认都不是完全编译,如果它在启动的关键路径中发挥重要作用,则可能存在问题。

Jetpack Compose 是一个不属于 Android 系统映像的界面库,因此与大多数 Android 视图工具包代码不同,它在安装时并未完全编译。这导致了性能问题,尤其是在应用前几次冷启动时。

为解决这一问题,Compose 使用了配置文件安装程序。该程序附带了基准配置文件规则,可以缩短 Compose 应用的启动时间并减少卡顿。

Google Play 商店的搜索结果页已经使用 Compose 进行重写。在集成 Compose 的基准配置文件规则后,渲染初始搜索结果页 (包括图像) 的时间缩短了约 40%。

Android 团队还将基准配置文件添加到了相关的 AndroidX 库。这可让所有使用这些库的 Android 应用受益。ConstraintLayout 发现附带的配置文件规则将动画帧时间缩短了超过 1 毫秒。

如何使用基准配置文件

创建自定义基准配置文件

所有应用和库开发者都可以从添加基准配置文件中获益。理想状态下,开发者为最关键的用户旅程创建配置文件,来确保不管云配置文件是否可用,这些旅程都拥有始终快速的性能。您可以查看详细指南,了解如何为应用和库开发者设置基准配置文件。

更新依赖项

如果您还未准备好为应用生成基准配置文件,您仍然可以受益于更新依赖项。如果您使用 Android Gradle 插件 7.1.0-alpha05 或更高版本构建应用,您将获得包含在 APK 中的基准配置文件,这些配置文件已经由库 (例如 Jetpack) 提供。Google Play 在安装时借助这些配置文件编译应用。您可以将这些配置文件作为构建应用的补充部分。

衡量改进情况

不要忘记衡量应用改进情况。您可以按照步骤操作,了解如何在本地衡量使用生成的配置文件的启动情况,也欢迎您持续关注我们了解更多最新内容。

原文标题:通过基准配置文件改善应用性能

文章出处:【微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    4035

    浏览量

    134480
  • 工作原理
    +关注

    关注

    4

    文章

    319

    浏览量

    38679

原文标题:通过基准配置文件改善应用性能

文章出处:【微信号:Google_Developers,微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    S32K3的ADC启动时间需要大约30ms左右,这是正常的吗?如何缩短这个时间

    我在使用S32K3的ADC,测试发现从上电初始化ADC,执行校准,开启转换,到首次完成采集,需要大约30ms左右,这是正常的吗?如何缩短这个时间
    发表于 04-24 06:28

    开发一个基于运行 Yocto 的 i.MX6ULL 的定制板,如何减少启动时间

    我正在开发一个基于运行 Yocto 的 i.MX6ULL 的定制板,我想尽可能减少启动时间。 到目前为止,我已经: 禁用内核中所有不必要的选项 (menuconfig) Yocto 图像减少到
    发表于 04-16 08:26

    [VirtualLab] 配置文件编辑工具:速度与精度

    配置文件编辑工具,用于定制光场数据采样的设置,在光通过光学系统传播过程中使用 配置文件编辑和运行功能区 **速度与精度 - 工具 ** **奈奎斯特周期评估精度等级 ** 场尺寸估计的功率部分 为了估算一
    发表于 04-14 08:29

    如何在 i.MX8MQ 上启动具有启动时间的最小映像?

    如何在 i.MX8MQ 上启动具有启动时间的最小映像
    发表于 04-02 07:49

    Xilinx A7 FPGA的上电启动时间分析

    在测试板卡时,发现FPGA板卡上电启动后,从flash读取配置信息的时间大约需要5、6秒的时间,这个时间个人感觉有点长了。
    的头像 发表于 03-31 11:13 279次阅读
    Xilinx A7 FPGA的上电<b class='flag-5'>启动时间</b>分析

    晶振启动时间优化指南:Q值、负载电容与电路设计

    温度和电源电压的稳定性,也会影响晶振的启动时间。温度对晶振的物理特性有显著影响,在极端温度(尤其是低温)环境下,晶振的响应会变慢,导致起动时间明显延长;电源电压的波动或噪声会直接影响振荡电路的稳定性,电压不稳可能导致晶振起动困难或起动
    的头像 发表于 03-27 17:48 134次阅读
    晶振<b class='flag-5'>启动时间</b>优化指南:Q值、负载电容与电路设计

    缩短启动时间的定制支持成为采用关键——持续选用Silex希来科无线模块逾十年

    缩短启动时间的定制支持成为采用关键——持续选用Silex希来科无线模块逾十年
    的头像 发表于 12-14 15:11 1311次阅读
    <b class='flag-5'>缩短</b><b class='flag-5'>启动时间</b>的定制支持成为采用关键——持续选用Silex希来科无线模块逾十年

    配置文件损坏可能会带来哪些安全风险?

    配置文件损坏不仅会导致电能质量在线监测装置功能异常,还可能引发 数据安全、运维安全、设备安全、合规安全 四大类安全风险,尤其在电力系统、工业配电等关键场景中,风险可能传导至电网或生产系统,造成
    的头像 发表于 12-10 16:37 579次阅读
    <b class='flag-5'>配置文件</b>损坏可能会带来哪些安全风险?

    DCDC芯片TPS54620的缓启动时间仿真

    以下以DCDC芯片TPS54620为例对缓启动时间进行仿真。
    的头像 发表于 12-02 15:20 730次阅读
    DCDC芯片TPS54620的缓<b class='flag-5'>启动时间</b>仿真

    求助各位大佬,关于如何读写编码格式为UTF-16LE的配置文件

    如题,小白求助各位大佬,要怎么实现对编码为UTF-16LE的配置文件的读写。 使用读配置文件的vi读不出内容。 使用读文本的方式写入异常,文件的编码变成UTF-8且内容也不对。
    发表于 09-14 12:54

    如何才能知道英飞凌Bluetooth®产品支持哪种Bluetooth®配置文件和版本?

    如何才能知道英飞凌Bluetooth®产品支持哪种Bluetooth®配置文件和版本? A2DP、AVRCP、HSP、HFP 等 是否有一个网页或文档解释每个设备支持哪些配置文件和版本? 目前我想了解以下设备特别支持的配置文件
    发表于 06-27 06:04

    宽温启动失败?聚徽揭秘防爆显示屏-40℃低温启动的加热膜配置技术

    防爆显示屏的低温启动难题,解析加热膜配置的核心技术,为工业场景提供可靠解决方案。 一、低温启动失败的核心挑战 1. 液晶材料性能衰减 在-40℃环境下,液晶材料粘度增加,响应
    的头像 发表于 06-18 16:17 1106次阅读

    配置文件的差异介绍

    配置文件的差异 FA模型应用在config.json文件中描述应用的基本信息,一个应用工程中可以创建多个Module,每个Module中都有一份config.json文件。config.json由
    发表于 06-05 06:50

    UIAbility组件启动模式:实例在启动时的不同呈现状态

    ()和onWindowStageCreate()生命周期回调。 如果需要使用singleton启动模式,在module.json5配置文件中的launchType字段配置为singleton即可。 {"
    发表于 05-16 06:10

    系统启动时间优化方案--基于米尔MYD-YG2LX开发板

    的接口和到内核配置文件中屏蔽掉一些不需要的驱动配置,例如: 使用Bootgraph分析内核启动的调用时间,移除花费时间长的驱动和优化需要使
    发表于 05-09 18:03