Android 日历团队如何使用基准配置文件改进应用启动和卡顿问题

基准配置文件可以略过常见用户历程的 解译和即时 (JIT) 编译 步骤 ,从而使代码执行速度提高高达 30%。基准配置文件可让您选择要优化的用户历程,并有助于缩短应用启动时间、减少卡顿等,进而改善用户留存率和评分等业务指标。 详细了解基准 配置文件

Android 日历团队实现了基准配置文件,并观察到应用 启动时间缩短了约 20%,缓慢或冻结的帧减少了约 50%。下面是他们为实现这些性能提升而采取的端到端措施,包括他们决定使用基准配置文件的原因以及他们如何衡量影响。

云配置文件与基准配置文件

Android 日历团队已在使用 云 配置文件,这是另一种配置文件引导的优化 (PGO) 方法,基于用户与应用的实际 互动。下面是云配置文件与基准配置文件 的比较:

配置文件类型 设置 包含的用户历程 最适合的用户群 实现的影响 支持的 Android 版本

云配置文件

默认处于启用状态

根据实际用户数据自动选择

几天内

Android 9(API 级别 28)及更高版本

基准配置文件

由您配置

由您选择

所有尺寸

立即

Android 7(API 级别 24)及更高版本

Android 日历团队决定将基准配置文件添加到其代码库的一个主要原因是,他们要转向更快的每周发布周期。虽然云配置文件可以显著提升性能,但它们需要依赖于 汇总实际用户数据,因此在应用发布后 1-2 天 才能达到最佳效果。通过使用基准 配置文件来补充云配置文件,用户可以在下一个应用版本发布之前有更多时间体验最佳性能改进 。

此外,Android 日历团队能够选择配置文件中具体包含哪些关键用户历程 (CUJ) 非常重要,而您可以使用基准配置文件来实现这一点。

一般来说,我们建议您除了使用默认启用的云配置文件之外,还使用基准配置文件, 以获得最佳性能。

包含的用户历程

Android 日历团队选择在其基准配置文件中包含两个 CUJ:

  • 在日程视图中打开应用:最初的默认视图,因此对于首次使用应用或不更改默认设置的用户来说,优化此视图非常重要。
  • 在月视图中打开应用:根据用户 数据,这是许多用户选择的视图。如需跟踪用户使用应用的方式,您可以使用 Firebase 等工具。

一般来说,您应添加对业务有利的 CUJ(如果 适用)以及最常见的 CUJ。如需详细了解如何选择要优化的 CUJ,请参阅要包含的内容

实现

Android 日历团队使用 Jetpack Macrobenchmark 库 的内部封装容器来生成基准配置文件,以便轻松与内部工具集成并实现 通用可伸缩性。

下面是在日程 视图中打开应用的 Macrobenchmark 测试配置:

@Test
fun generateProfile() =
    baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
        uiAutomator {
            startApp(packageName = PACKAGE_NAME)
            // Verify pre-existing recurring events and tasks are shown.
            // onElement waits for the element by default
            onElement { textAsString() == "Recurring event" }
            onElement { textAsString() == "Recurring task" }

            // Open drawer and verify selected view.
            onElement { contentDescriptionAsString() == "Show Calendar List and Settings drawer" }.click()
            onElement { contentDescriptionAsString() == "Schedule view, Selected" }
        }
    }

替换以下内容:

  • PACKAGE_NAME:您要为其生成基准配置文件的应用的软件包名称。

使用受控发布衡量影响

由于基准配置文件与它们随附的 APK 紧密耦合 并且在应用运行之前就已纳入,因此无法运行标准 A/B 实验来了解它们的影响。不过,Android 日历团队能够使用“受控发布”准确衡量影响,即您基本上只向一部分用户发布新应用版本,并将他们与使用与之前版本类似版本的用户进行比较。

借助基准配置文件,他们在多个方面看到了以下立竿见影的显著 改进。这些统计数据汇总了各种设备和所有用户的数据,其中在日程视图和月视图中启动的用户可能会获得最大的好处,但其他用户也会受益,因为共享进程(例如从数据库加载日历数据)得到了优化。

  • 中位交互式应用启动(最常见的场景)延迟时间从 775 毫秒缩短到 644 毫秒(17%)
  • 中位冷启动延迟时间从 1,058 毫秒缩短到 901 毫秒(15%)
  • 中位温启动延迟时间从 453 毫秒缩短到 378 毫秒(17%)
  • 在日程视图和月视图中,中位卡顿帧速率降低了 42-60%

请注意,如果您将云配置文件与基准 配置文件结合使用,您可能会发现改进效果在第一周内略有下降,因为云配置文件是在此期间生成的。不过,除了您已实施的其他 优化之外,您仍然应该 观察到基准配置文件带来的显著性能提升。

如需详细了解相关工具和功能,请参阅以下资源: