您可以使用以下插桩参数配置库的行为。这些参数既可以添加到 Gradle 配置中,也可以在从命令行运行插桩时直接应用。如需针对所有 Android Studio 和命令行测试运行来设置这些参数,请将所需参数添加到 testInstrumentationRunnerArguments
中:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
您还可以在从 Android Studio 运行基准测试时设置插桩参数。如需更改参数,请执行以下操作:
- 点击修改,然后点击相应配置,以修改运行配置。
- 点击插桩参数所对应的 更多来修改插桩参数。
- 点击 Instrumentation Extra Params 下的 Add,添加所需的插桩参数。
如果您要从命令行运行 macrobenchmark,请使用 -P
android.testInstrumentationRunnerArguments.[name of the argument]
:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
如果您直接调用 am instrument
命令(在 CI 测试环境中可能就是这种情况),请使用 -e
将参数传递给 am instrument
:
adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner
如需详细了解如何在持续集成环境中配置基准测试,请参阅在持续集成环境中运行基准测试
androidx.benchmark.compilation.enabled
此参数可允许您在基准测试的每次迭代之间停用编译。默认情况下,系统会在每次基准测试之间重新安装和重新编译目标应用,以遵循传入 measureRepeated
的 CompilationMode
。停用此参数后,您可以跳过重新安装和编译过程(例如,如果您想要在运行测试套件之前完全编译目标应用,并针对该完全编译的目标运行所有基准测试)。
- 参数类型:布尔值
- 默认为:
true
androidx.benchmark.dryRunMode.enable
此参数可允许您在单个循环中运行基准测试,以验证基准测试是否正常运行。在验证过程中,您可以将此参数与常规测试搭配使用。
- 参数类型:布尔值
- 默认为:
false
androidx.benchmark.enabledRules
允许仅过滤一种类型的测试:基准配置文件生成或 Macrobenchmark 测试。还支持逗号分隔列表。
- 参数类型:字符串
- 可用选项:
Macrobenchmark
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>
的情况下运行。Android 10 和 11 中要求启用配置文件功能,以便 Macrobenchmark 从目标进程中捕获详细的跟踪信息,例如应用或库中定义的系统跟踪部分。忽略此错误时需要慎之又慎。METHOD-TRACING-ENABLED
针对要进行基准测试的应用运行的 Macrobenchmark 已启用方法跟踪。这会减慢虚拟机的运行速度,因此请仅考虑跟踪文件中的相对指标,例如比较首次运行与第二次运行的速度。如果您在具有不同方法追踪选项的 build 之间比较基准测试,则忽略此错误可能会导致结果不准确。
默认为:一个空列表
additionalTestOutputDir
配置在设备上保存 JSON 基准测试报告和性能分析结果的位置。
- 参数类型:路径字符串
- 默认为:测试 APK 的外部目录
为您推荐
- 注意:当 JavaScript 处于关闭状态时,系统会显示链接文字
- Microbenchmark 插桩参数
- 创建基准配置文件
- JankStats 库