添加性能测试参数

使用以下性能测试参数配置库的行为。您可以将这些参数添加到 Gradle 配置中,或者在从命令行运行性能测试时直接应用它们。要为所有 Android Studio 和命令行测试运行设置这些参数,请将它们添加到 testInstrumentationRunnerArguments

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

您也可以在从 Android Studio 运行基准测试时设置性能测试参数。要更改参数,请执行以下操作

  1. 通过单击 编辑,然后单击配置来编辑运行配置。
    edit run configuration
    图 1. 编辑运行配置。
  2. 通过单击 更多,然后单击 性能测试参数 来编辑性能测试参数。
    edit the instrumentation arguments
    图 2. 编辑性能测试参数。
  3. 通过单击 添加,在 性能测试额外参数 下添加所需的性能测试参数。
    add required instrumentation argument
    图 3. 添加所需的性能测试参数。

如果您直接从命令行调用,请使用 -P android.testInstrumentationRunnerArguments.[参数名称]

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile

androidx.benchmark.compilation.enabled

允许您在每次基准测试迭代之间禁用编译。默认情况下,目标应用将在每次基准测试之间重新安装和重新编译,以尊重传递给 CompilationModemeasureRepeated。禁用此选项可以让您在例如,您想在运行测试套件之前完全编译目标应用一次并在该完全编译的目标应用上运行所有基准测试的情况下,跳过重新安装和编译。

  • 参数类型: 布尔值
  • 默认值: true

androidx.benchmark.dryRunMode.enable

允许您在单个循环中运行基准测试以验证它们是否正常工作。您可以将其与常规测试一起使用,作为验证的一部分。

  • 参数类型: 布尔值
  • 默认值: false

androidx.benchmark.enabledRules

允许将运行过滤到仅一种类型的测试:基线配置文件生成或宏基准测试。也支持逗号分隔的列表。

  • 参数类型:字符串
  • 可用选项
    • 宏基准测试
    • BaselineProfile
  • 默认值: 未指定

androidx.benchmark.junit4.SideEffectRunListener

如果在基准测试运行时执行了无关的后台工作,您可能会得到不一致的基准测试结果。

要禁用基准测试期间的后台工作,请将listener 测​​试参数类型设置为 androidx.benchmark.junit4.SideEffectRunListener

  • 参数类型: 字符串
  • 可用选项
    • androidx.benchmark.junit4.SideEffectRunListener
  • 默认值: 未指定

androidx.benchmark.fullTracing.enable

启用 androidx.tracing.perfetto 跟踪点,例如 Jetpack Compose 组合跟踪。

您需要设置您的项目才能从基准测试中捕获组合跟踪。有关更多信息,请参阅使用 Jetpack Macrobenchmark 捕获跟踪

  • 参数类型:布尔值
  • 默认值false

androidx.benchmark.profiling.mode

允许在运行基准测试时捕获跟踪文件。可用选项与 Microbenchmark 库的选项相同,有关更多信息,请参阅分析 Microbenchmark 中的描述。

  • 参数类型: 字符串
  • 可用选项
    • MethodTracing
    • StackSampling
    • None
  • 默认值: None

androidx.benchmark.startupProfiles.enable

允许您在基准测试期间禁用启动配置文件的生成。

  • 参数类型:布尔值
  • 默认值: true

androidx.benchmark.suppressErrors

接受逗号分隔的错误列表,将其转换为警告。

  • 参数类型:字符串列表
  • 可用选项

    • DEBUGGABLE

      DEBUGGABLE 错误表示目标包在其清单中以 debuggable=true 运行,这会大幅降低运行时性能以支持调试功能。为避免此错误,请使用 debuggable=false 运行基准测试。可调试参数会以影响基准测试改进可能不会延续到真实用户的体验或可能导致发布性能下降的方式影响执行速度。

    • LOW-BATTERY

      当电池电量不足时,设备通常会降低性能以节省剩余电量,例如禁用大核心。即使设备已插入电源,这种情况也会发生。仅当您有意以降低的性能分析应用程序时,才抑制此错误。

    • EMULATOR

      EMULATOR 错误告诉您基准测试正在模拟器上运行,这不能代表真实用户的设备。模拟器基准测试改进可能不会延续到真实用户的体验,或者可能导致真实设备性能下降。您应该使用物理设备进行基准测试。请谨慎地抑制此错误。

    • NOT-PROFILEABLE

      目标包 $packageName 在没有 <profileable shell=true> 的情况下运行。Profileable 在 Android 10 和 11 上是必需的,以便让 Macrobenchmark 从目标进程捕获详细的跟踪信息,例如应用程序或库中定义的系统跟踪部分。请谨慎地抑制此错误。

    • METHOD-TRACING-ENABLED

      正在进行基准测试的应用程序的 Macrobenchmark 运行已启用方法跟踪。这会导致 VM 比平时运行得更慢,因此仅从跟踪文件中的指标中以相对方式考虑指标,例如,比较第一次运行的速度与第二次运行的速度。如果您比较具有不同方法跟踪选项的构建的基准测试,则抑制此错误会导致结果不准确。

  • 默认值:空列表

additionalTestOutputDir

配置 JSON 基准测试报告和分析结果在设备上的保存位置。

  • 参数类型: 路径字符串
  • 默认值: 测试 APK 的外部目录