Los perfiles de Baseline mejoran la velocidad de ejecución del código hasta en un 30% porque evitan los pasos de interpretación y compilación just-in-time (JIT) para los recorridos comunes del usuario. Los perfiles de Baseline te permiten elegir los recorridos del usuario que deseas optimizar y pueden ayudarte a mejorar el inicio de la app, reducir la latencia y mucho más, lo que, a su vez, genera mejores métricas comerciales, como la retención y las calificaciones de los usuarios. Obtén más información sobre los perfiles de Baseline Profiles.
El equipo de Calendario de Android implementó perfiles de Baseline y observó una mejora de aproximadamente el 20% en el tiempo de inicio de la app y una reducción de aproximadamente el 50% en los fotogramas lentos o congelados. Esto es lo que hicieron de extremo a extremo para lograr estas mejoras de rendimiento, desde por qué decidieron usar perfiles de Baseline hasta cómo midieron el impacto.
Perfiles de Cloud en comparación con perfiles de Baseline
El equipo de Calendario de Android ya usaba perfiles de Cloud, que son otro método de optimización guiada por perfil (PGO) basado en las interacciones reales del usuario con la app. A continuación, se comparan los perfiles de Cloud y los perfiles de Baseline:
| Tipo de perfil | Configurar | Recorridos del usuario incluidos | Funciona mejor cuando la base de usuarios es | Impacto realizado | Versiones de Android compatibles |
|---|---|---|---|---|---|
Perfiles de Cloud |
Habilitado de forma predeterminada |
Se elige automáticamente en función de los datos reales del usuario |
Grande |
En un par de días |
Android 9 (nivel de API 28) y versiones posteriores |
Perfiles de Baseline |
Configurado por ti |
Tú lo eliges |
Todos los tamaños |
Inmediatez |
Android 7 (nivel de API 24) y versiones posteriores |
Uno de los motivos clave por los que el equipo de Calendario de Android decidió agregar perfiles de Baseline a su código base fue porque estaban migrando a un ciclo de lanzamiento semanal más rápido. Si bien los perfiles de Cloud proporcionan mejoras significativas en el rendimiento, tardan entre 1 y 2 días después del lanzamiento de la app en alcanzar su impacto máximo, ya que dependen de la agregación de datos reales del usuario. Complementar los perfiles de Cloud con perfiles de Baseline les da a los usuarios más tiempo para experimentar mejoras máximas en el rendimiento antes de que se lance la próxima versión de la app.
Además, era importante que el equipo de Calendario de Android pudiera elegir qué recorridos críticos del usuario (CUJ) se incluyen específicamente en el perfil, lo que puedes hacer con los perfiles de Baseline.
En general, recomendamos usar perfiles de Baseline además de los perfiles de Cloud, habilitados de forma predeterminada, para obtener los mejores resultados de rendimiento.
Recorridos del usuario incluidos
El equipo de Calendario de Android decidió incluir dos CUJ en sus perfiles de Baseline:
- Abrir la app en la vista de programación: Inicialmente, la vista predeterminada, por lo que es importante optimizarla para los usuarios que usan la app por primera vez o que no cambian la configuración predeterminada.
- Abrir la app en la vista mensual: La vista elegida para muchos usuarios, según los datos del usuario. Para hacer un seguimiento de cómo los usuarios usan tu app, puedes usar herramientas como Firebase.
En general, debes agregar los CUJ que sean rentables para la empresa (si corresponde) y los CUJ que sean más comunes. Para obtener más información sobre cómo elegir los CUJ para optimizar, consulta Qué incluir.
Implementación
El equipo de Calendario de Android usa un wrapper interno para la biblioteca de Macrobenchmark de Jetpack para generar perfiles de Baseline para facilitar la integración con herramientas internas y la escalabilidad general.
Esta es la configuración de prueba de Macrobenchmark para abrir la app en la vista de programación:
@Test
fun generateProfile() =
baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
uiAutomator {
startApp(packageName = PACKAGE_NAME)
// Verify pre-existing recurring events and tasks are shown.
// onElement waits for the element by default
onElement { textAsString() == "Recurring event" }
onElement { textAsString() == "Recurring task" }
// Open drawer and verify selected view.
onElement { contentDescriptionAsString() == "Show Calendar List and Settings drawer" }.click()
onElement { contentDescriptionAsString() == "Schedule view, Selected" }
}
}
Reemplaza lo siguiente:
- PACKAGE_NAME: Es el nombre del paquete de la app para la que deseas generar perfiles de Baseline.
Mide el impacto con lanzamientos controlados
Dado que los perfiles de Baseline están estrechamente vinculados con el APK con el que se envían y se incorporan antes de que se ejecute la app, no es posible ejecutar un experimento A/B estándar para comprender su impacto. Sin embargo, el equipo de Calendario de Android pudo obtener una medición precisa del impacto con lanzamientos controlados, en los que básicamente lanzas la nueva versión de la app solo a un subconjunto de usuarios y los comparas con los usuarios que tienen una versión similar a la versión anterior.
Con los perfiles de Baseline, observaron las siguientes mejoras significativas e inmediatas en varias áreas. Estas estadísticas se agregan en una amplia variedad de dispositivos y en todos los usuarios. Es probable que aquellos que comienzan en la vista de programación y mensual obtengan los mayores beneficios, pero otros usuarios también se benefician debido a la optimización de los procesos compartidos, como la carga de datos del calendario desde la base de datos.
- La latencia de inicio de la app interactiva mediana (situación más común) disminuyó de 775 ms a 644 ms (17%).
- La latencia de inicio en frío mediana disminuyó de 1,058 ms a 901 ms (15%).
- La latencia de inicio en tibio mediana disminuyó de 453 ms a 378 ms (17%).
- La tasa de fotogramas con latencia mediana disminuyó entre un 42% y un 60% en las vistas de programación y mensual.
Ten en cuenta que, si usas perfiles de Cloud junto con perfiles de Baseline , es probable que veas que las mejoras disminuyen ligeramente durante el transcurso de la primera semana, a medida que se generan los perfiles de Cloud. Sin embargo, aún deberías observar mejoras significativas en el rendimiento con los perfiles de Baseline, además de otras optimizaciones que tengas implementadas.
Para obtener más información sobre las herramientas y funciones, consulta los siguientes recursos:
- Información acerca de los perfiles de Baseline
- Cómo generar comparativas de perfiles de Baseline con la biblioteca de Macrobenchmark