关于android:通过基准配置文件改善应用性能

2次阅读

共计 2521 个字符,预计需要花费 7 分钟才能阅读完成。

作者 / Android 开发者关系工程师 Florina Muntenescu

启动工夫的重要性

利用性能和用户参与度的相关性在许多利用中都有所体现。用户心愿利用响应迅速且能疾速加载,而 启动工夫 就是掂量利用性能和品质的次要指标之一。

咱们的一些合作伙伴曾经投入大量工夫和资源来优化利用启动状况。例如,您能够浏览理解 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;)V
HSPLandroidx/compose/runtime/ComposerImpl;->updatedNodeCount(I)I
HLandroidx/compose/runtime/ComposerImpl;->validateNodeExpected()V
PLandroidx/compose/runtime/CompositionImpl;->applyChanges()V
HLandroidx/compose/runtime/ComposerKt;->findLocation(Ljava/util/List;I)I

△ Compose 库的示例

二进制文件存储在 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 在装置时借助这些配置文件编译利用。您能够将这些配置文件作为 构建利用的补充局部。

掂量改良状况

不要遗记掂量利用改良状况。您能够 依照步骤操作,理解如何在本地掂量应用生成的配置文件的启动状况。

欢迎您分享体验反馈。

如有其余发现的问题或者内容倡议,欢迎您 点击这里 向咱们提交反馈,或分享您喜爱的内容、发现的问题。您的反馈对咱们十分重要,感谢您的反对!

正文完
 0