基线配置文件通过避免对常见用户旅程进行解释器和即时 (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) {
startActivityAndWait()
// Verify pre-existing recurring events and tasks are shown.
device.waitAndFindObject(By.text("Recurring event"), 20_000)
device.waitAndFindObject(By.text("Recurring task"), 20_000)
// Open drawer and verify selected view.
device.findObject(By.desc("Show Calendar List and Settings drawer")).click()
device.waitAndFindObject(By.desc("Schedule view, Selected"), 1_000)
}
使用受控发布衡量影响
由于基线配置文件与它们随附的APK紧密耦合,并在应用运行前集成,因此无法运行标准的A/B测试来了解其影响。但是,Android日历团队能够使用*受控发布*准确衡量影响,在受控发布中,您实际上只向一部分用户发布新应用版本,并将他们与使用类似于先前版本的用户的进行比较。
借助基线配置文件,他们在多个领域看到了以下直接且显著的改进。这些统计数据是在各种设备和所有用户中汇总的——从日程视图和月视图开始的用户可能会获得最大的好处,但其他用户也会受益,因为共享进程(例如从数据库加载日历数据)得到了优化。
- 交互式应用启动(最常见场景)的中位延迟从775毫秒降至644毫秒(降低17%)
- 冷启动的中位延迟从1058毫秒降至901毫秒(降低15%)
- 热启动的中位延迟从453毫秒降至378毫秒(降低17%)
- 日程视图和月视图中卡顿帧率的中位数降低了42-60%
请记住,如果您将云配置文件与基线配置文件结合使用,则在第一周内,随着云配置文件的生成,改进可能会略微下降。但是,您仍然应该在其他优化措施的基础上观察到基线配置文件带来的显著性能提升。
要了解有关工具和功能的更多信息,请参阅以下资源