Configura el comportamiento de Microbenchmark con los siguientes argumentos de instrumentación. Puedes agregarlos a tu configuración de Gradle o aplicarlos directamente cuando ejecutes la instrumentación desde la línea de comandos. Para establecer estos argumentos para todas las ejecuciones de prueba de línea de comandos y de Android Studio, agrégalos a testInstrumentationRunnerArguments
:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
También puedes configurar argumentos de instrumentación cuando ejecutas comparativas desde Android Studio. Para cambiar los argumentos, haz lo siguiente:
- Para editar la configuración de ejecución, haz clic en Edit y selecciona la configuración que deseas editar.
Figura 1: Edita la configuración de ejecución. - Para editar los argumentos de instrumentación, haz clic en
Figura 2: Edita el argumento de instrumentación.
junto al campo Instrumentation arguments.
- Haz clic en
Figura 3: Agrega el argumento de instrumentación.
y agrega el argumento de instrumentación requerido.
Si ejecutas la comparativa desde la línea de comandos, usa -P
android.testInstrumentationRunnerArguments.[name of the argument]
:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling
Si invocas un comando de instrumentación directamente (lo que puede ocurrir en entornos de pruebas de CI), pasa el argumento a am instrument
con -e
:
adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
Para obtener más información sobre cómo configurar comparativas en CI, consulta Comparativas en CI.
androidx.benchmark.cpuEventCounter.enable (experimental)
Cuenta los eventos de CPU especificados en androidx.benchmark.cupEventCounter.events
.
Requiere acceso de administrador.
- Tipo de argumento: booleano
- Valor predeterminado: falso
androidx.benchmark.cpuEventCounter.events (experimental)
Especifica qué tipos de eventos de CPU se deben contar. Para usar este argumento, androidx.benchmark.cpuEventCounter.enable
debe configurarse como true
.
- Tipo de argumento: Lista de cadenas separadas por comas
- Opciones disponibles:
Instructions
CPUCycles
L1DReferences
L1DMisses
BranchInstructions
BranchMisses
L1IReferences
L1IMisses
- Valores predeterminados:
Instructions
,CpuCycles
,BranchMisses
androidx.benchmark.dryRunMode.enable
Te permite ejecutar comparativas en un solo bucle para verificar si funcionan correctamente.
Esto significa lo siguiente:
- Los errores de configuración no se aplican (por ejemplo, para facilitar la ejecución con pruebas de corrección regulares en emuladores).
- La comparativa solo ejecuta un bucle, sin preparación.
- No se capturan mediciones ni registros para reducir el tiempo de ejecución.
Esto optimiza la capacidad de procesamiento de las pruebas y valida la lógica de las comparativas en lugar de la corrección de la compilación y la medición.
- Tipo de argumento: booleano
- Configuración predeterminada:
false
androidx.benchmark.killExistingPerfettoRecordings
De forma predeterminada, Benchmark detiene cualquier grabación existente de Perfetto (registro del sistema) cuando se inicia un nuevo registro para reducir la interferencia. Para inhabilitar este comportamiento, pasa false
.
- Tipo de argumento: booleano
- Configuración predeterminada:
true
androidx.benchmark.output.enable
Permite escribir el archivo JSON resultante en el almacenamiento externo.
- Tipo de argumento: booleano
- Configuración predeterminada:
true
androidx.benchmark.profiling.mode
Permite capturar archivos de registro mientras se ejecutan las comparativas. Consulta Cómo generar perfiles con Microbenchmark para ver las opciones disponibles.
Ten en cuenta que algunas versiones del SO de Android no admiten el registro de seguimiento de métodos sin que se vean afectadas las mediciones posteriores. Microbenchmark arroja una excepción para evitar esto, por lo que debes usar el argumento predeterminado para capturar los registros del método solo cuando sea seguro hacerlo. Consulta el problema #316174880.
- Tipo de argumento: string
- Opciones disponibles:
MethodTracing
StackSampling
None
- Valor predeterminado: Versión segura de
MethodTracing
que solo captura un registro del método si el dispositivo puede hacerlo sin afectar las mediciones.
androidx.benchmark.suppressErrors
Acepta una lista de errores separada por comas que se convertirán en advertencias.
- Tipo de argumento: Lista de cadenas
- Opciones disponibles:
DEBUGGABLE
LOW-BATTERY
EMULATOR
CODE-COVERAGE
UNLOCKED
SIMPLEPERF
ACTIVITY-MISSING
- Configuración predeterminada: una lista vacía
additionalTestOutputDir
Establece en qué lugar del dispositivo se guardan los informes de comparativas de JSON y los resultados de la generación de perfiles.
- Tipo de argumento: string de ruta de acceso del archivo
- Configuración predeterminada: directorio externo del APK de prueba
objeto de escucha
Es posible que obtengas resultados de comparativas incoherentes si se ejecuta un trabajo en segundo plano no relacionado mientras se ejecutan las comparativas.
Para inhabilitar el trabajo en segundo plano durante las comparativas, establece el tipo de argumento de instrumentación listener
en androidx.benchmark.junit4.SideEffectRunListener
.
- Tipo de argumento: Cadena
- Opciones disponibles:
androidx.benchmark.junit4.SideEffectRunListener
- Configuración predeterminada: No se especifica
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Argumentos de instrumentación de Macrobenchmark
- Cómo generar perfiles con Microbenchmark
- Cómo crear perfiles de Baseline {:#creating-profile-rules}