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 |