De forma predeterminada, las microcomparativas te proporcionan información sobre el tiempo y las asignaciones del código ejecutado. Si deseas investigar por qué el código medido se ejecuta con lentitud, puedes ejecutar las comparativas con el Generador de perfiles de CPU conectado. Para seleccionar la configuración del generador de perfiles, agrega un argumento de ejecutor de instrumentación androidx.benchmark.profiling.mode
con una de las siguientes opciones: MethodTracing
, StackSampling
o None
(como se muestra en el siguiente fragmento). Para obtener más información sobre las opciones, consulta Cómo elegir una configuración de registro.
Groovy
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
Kotlin
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
Cuando generes el perfil de una comparativa, se copiará un archivo .trace
de salida al host en el directorio junto con los resultados JSON. Ábrelo con Android Studio haciendo clic en File > Open a fin de inspeccionar los resultados de la generación de perfiles en el Generador de perfiles de CPU.
MethodTracing
Con el registro de métodos, la comparativa se prepara antes de capturar un seguimiento de métodos, de modo que se registran todos los métodos que llame tu comparativa. Los resultados de rendimiento se ven afectados de manera significativa por la sobrecarga de capturar la entrada/salida de cada método.
StackSampling
Con el muestreo de pila, la comparativa toma muestras de pilas de llamadas después de que se completa la preparación. Puedes controlar la frecuencia de muestreo y la duración de muestreo mediante argumentos de instrumentación.
En Android 10 (API 29) y versiones posteriores, el muestreo de pila usa Simpleperf para tomar muestras de pilas de llamadas de apps, incluido el código de C++. En Android 9 (API 28) y versiones anteriores, usa Debug.startMethodTracingSampling
para capturar muestras de pilas.
Puedes configurar este modo de generación de perfiles agregando otros argumentos de instrumentación:
androidx.benchmark.profiling.sampleFrequency
- Cantidad de muestras de pila para capturar por segundo
- Tipo de argumento: número entero
- La configuración predeterminada es de 1,000 muestras por segundo
androidx.benchmark.profiling.sampleDurationSeconds
- Duración de la comparativa que se ejecuta
- Tipo de argumento: número entero
- La configuración predeterminada es 5 segundos
Ninguno
No captura un archivo de generación de perfiles. Aún se mide la información sobre el tiempo y las asignaciones.