Cómo realizar comparativas de tu app

Las comparativas sirven para probar el rendimiento de tu aplicación. Puedes ejecutar comparativas de forma regular a fin de analizar y depurar problemas de rendimiento y asegurarte de no introducir regresiones en los cambios recientes.

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

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 (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 aplicación, estos pueden ser buenos ejemplos para generar comparativas. También puedes medir partes de tu 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 podrás medir cómo los casos de comparativas contribuyen a la experiencia general del usuario. En algunas situaciones, las comparativas no te indicarán si estás mejorando un cuello de botella, como el bloqueo o el tiempo de inicio de la aplicación. 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, a fin de crear resultados menos ruidosos, lo que te permite enfocarte en un área de mejora.

La Biblioteca de microcomparativas solo informa datos sobre tu aplicación, 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.

Macrocomparativas

La Biblioteca de macrocomparativas mide interacciones del usuario final más grandes, como el inicio, la interacción con la IU y animaciones. A diferencia de la Biblioteca de microcomparativas, la de macrocomparativas ofrece control directo sobre el entorno de rendimiento que estás probando. Te permite controlar la compilación, el inicio y la detención de la aplicación para medir directamente el inicio o el desplazamiento de la app real, en lugar de solo las funciones específicas activas con compilación JIT, con todos los accesos al disco almacenados en caché.

La biblioteca inserta eventos y supervisa los resultados de forma externa desde una aplicación de prueba que se compila con tus pruebas. Por lo tanto, cuando escribas las comparativas, no llamarás al código de la aplicación directamente y, en su lugar, navegarás dentro de la aplicación como lo haría un usuario.

Comparación de bibliotecas de comparativas

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