Cómo realizar comparativas de tu app

Las comparativas sirven para inspeccionar y supervisar el rendimiento de tu app. Puedes ejecutar comparativas de forma periódica para analizar y depurar problemas de rendimiento y asegurarte de no introducir regresiones en los cambios recientes.

Android ofrece dos bibliotecas y enfoques de comparativas para analizar y probar diferentes tipos de situaciones en tu app: las macrocomparativas y las microcomparativas.

Macrocomparativas

La biblioteca de macrocomparativas mide las interacciones del usuario final más grandes, como el inicio, la interacción con la IU y las animaciones. Además, ofrece un control directo del entorno de rendimiento que estás probando. Te permite controlar la compilación y también iniciar y detener tu app para medir directamente el inicio o el desplazamiento reales de la app.

La biblioteca de macrocomparativas inserta eventos y supervisa los resultados de forma externa desde una app de prueba que se compila con tus pruebas. Por lo tanto, cuando escribes las comparativas, no llamas al código de tu app directamente y, en su lugar, navegas dentro de la app como un usuario.

Microcomparativas

La biblioteca de microcomparativas te permite obtener comparativas del código de la app directamente en un bucle. Está diseñada para medir el trabajo de la CPU que evalúa el rendimiento en el mejor de los casos (como JIT en caliente y el acceso al disco almacenado en caché), que puedes ver con un bucle interno o una función activa específica. ​​La biblioteca solo puede medir el código al que puedes llamar directamente de forma aislada.

Si tu app necesita procesar una estructura de datos compleja o tener un algoritmo específico con gran carga de cálculo al que se llama varias veces durante la ejecución de la app, estos pueden ser buenos casos de comparativas. También puedes medir partes de la IU. Por ejemplo, puedes medir el costo de la vinculación del elemento RecyclerView, cuánto tarda en aumentar un diseño o qué tan exigente es el pase de diseño y medición de tu clase View desde la perspectiva del rendimiento.

Sin embargo, no puedes medir cómo los casos de comparativas contribuyen a la experiencia general del usuario. En algunas situaciones, las comparativas no te indican si estás mejorando un cuello de botella, como el bloqueo o el tiempo de inicio de la app. Por ese motivo, es fundamental identificar esos cuellos de botella primero con Android Profiler. Una vez que hayas encontrado el código que quieras investigar y optimizar, el bucle comparativo se puede ejecutar de manera reiterada, de un modo rápido y fácil, para crear resultados menos ruidosos, lo que te permite enfocarte en un área de mejora.

La biblioteca de microcomparativas solo informa datos sobre tu app, no sobre el sistema en general. Por lo tanto, se recomienda para analizar el rendimiento de las situaciones específicas de la app, no las que podrían relacionarse con los problemas generales del sistema.

Comparación de bibliotecas de comparativas

Macrocomparativas Microcomparativas
Versión de la API 23 y posteriores 14 y posteriores
Función Medición de las interacciones o los puntos de entrada de alto nivel, como el inicio de una actividad o el desplazamiento por una lista Medición de funciones individuales
Alcance Prueba de la app completa fuera del proceso Prueba del trabajo de la CPU durante el proceso
Velocidad Velocidad de iteración media (puede exceder un minuto) Velocidad de iteración rápida (con frecuencia, menos de 10 segundos)
Registro Los resultados incluyen registros de generación de perfiles Muestreo y registro de métodos opcionales