Cómo el equipo del Calendario de Android mejoró el inicio y el bloqueo de la app con los perfiles de Baseline

Los perfiles de Baseline mejoran la velocidad de ejecución del código hasta en un 30%, ya que evitan de intérprete y compilación just-in-time (JIT) pasos para los recorridos de usuario comunes. Los perfiles de Baseline te permiten elegir los recorridos del usuario desean optimizar y pueden ayudar a mejorar el inicio de la app, reducir los bloqueos y más, lo que a su vez, mejoran las métricas de las empresas, como la retención y las calificaciones de los usuarios. Más información sobre Baseline Perfiles.

El equipo del Calendario de Android implementó perfiles de Baseline y observó alrededor del 20% de la app. de mejora en el tiempo de inicio y reducción de alrededor del 50% en fotogramas lentos o congelados. Aquí tienes lo que hizo de principio a fin para lograr estas victorias en el rendimiento, y por qué decidió usar los Perfiles de Baseline para medir el impacto.

Perfiles de Cloud vs. Perfiles de Baseline

El equipo del Calendario de Android ya usaba Cloud Perfiles, que son otro método de optimización guiada por perfil (PGO) basado en reglas interacciones con la aplicación. Así es como los perfiles de Cloud y los de Baseline comparar:

Tipo de perfil Configurar Los recorridos del usuario incluidos Funciona mejor cuando la base de usuarios es Impacto obtenido Versiones de Android compatibles

Perfiles de Cloud

Habilitadas de forma predeterminada

Se elige automáticamente en función de los datos del usuario del mundo real

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

Una de las principales razones por las que el equipo del Calendario de Android decidió agregar perfiles de Baseline a su base de código era que estaba pasando a un ciclo de lanzamiento semanal más rápido. Si bien los perfiles de Cloud proporcionan mejoras de rendimiento significativas, tardan entre 1 y 2 días. para alcanzar su máximo impacto después del lanzamiento de la app la agregación de datos del usuario del mundo real. Complementa los perfiles de Cloud con Baseline Los perfiles les dan a los usuarios más tiempo para experimentar las mejoras en el rendimiento máximo antes del lanzamiento de 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 que puedes hacer con los perfiles de Baseline.

En general, recomendamos usar perfiles de Baseline además de perfiles de Cloud. habilitado de forma predeterminada para obtener el mejor rendimiento posible.

Los recorridos del usuario incluidos

El equipo del Calendario de Android decidió incluir dos CUJ en sus perfiles de Baseline:

  • Abrir la app en la vista Agenda: inicialmente es la vista predeterminada, por lo que es importante realizar optimizaciones para los usuarios que utilizan la aplicación por primera vez o que no cambian la la configuración predeterminada.
  • Apertura de la app en la vista de mes: La vista elegida para muchos usuarios, según la actividad de datos no estructurados. Para realizar un seguimiento de la forma en que los usuarios usan tu app, puedes usar herramientas como las siguientes: Firebase

Generalmente, debes agregar los CUJ que sean rentables para el negocio (si aplicables) y los CUJ más comunes. Para obtener más información sobre cómo elegir CUJ para optimizar, consulta Qué incluir.

Implementación

El equipo del Calendario de Android usa un wrapper interno para el Biblioteca de Jetpack Macrobenchmark generar perfiles de Baseline para facilitar la integración con herramientas internas y escalabilidad general.

Esta es la configuración de prueba de Macrobenchmark para abrir la app según la programación vista:

@Test
fun generateProfile() =
    baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
        startActivityAndWait()
        // Verify pre-existing recurring events and tasks are shown.
        device.waitAndFindObject(By.text("Recurring event"), 20_000)
        device.waitAndFindObject(By.text("Recurring task"), 20_000)

        // Open drawer and verify selected view.
        device.findObject(By.desc("Show Calendar List and Settings drawer")).click()
        device.waitAndFindObject(By.desc("Schedule view, Selected"), 1_000)
    }

Mide el impacto mediante versiones controladas

Dado que los perfiles de Baseline tienen acoplamiento alto con el APK con el que se envían. y se incorporan antes de que se ejecute la app, no es posible ejecutar una prueba A/B estándar un experimento para comprender su impacto. Sin embargo, el equipo del Calendario de Android lograr una medición precisa del impacto mediante las versiones controladas, en las que lancen la nueva versión de la app para un subconjunto de usuarios y la comparen a los usuarios que usan una versión similar a la anterior.

Con los perfiles de Baseline, observaron lo siguiente de inmediato mejoras en varias áreas. Estas estadísticas se agregan en un amplio rango de dispositivos y de todos los usuarios: aquellos que comienzan con la vista de agenda y mes. probablemente obtengan los mayores beneficios, pero otros usuarios también se benefician debido al Optimización de procesos compartidos, como la carga de datos de calendario desde la en la base de datos.

  • La latencia mediana del inicio de la app interactiva (caso más común) disminuyó de un 775 ms a 644 ms (17%)
  • La latencia mediana de inicio en frío disminuyó de 1,058 ms a 901 ms (15%)
  • La latencia mediana de inicio semicaliente disminuyó de 453 ms a 378 ms (17%)
  • La mediana de la velocidad de fotogramas con bloqueos disminuyó entre un 42% y un 60% en las vistas de programación y mes.

Ten en cuenta que, si usas perfiles de Cloud junto con Baseline Perfiles en los que es probable que se produzcan mejoras en los perfiles la primera semana, a medida que se generan los perfiles de Cloud. Sin embargo, aún debes observar aumentos significativos en el rendimiento con los perfiles de Baseline por encima de otros optimizaciones que implementes.

Para obtener más información sobre las herramientas y funciones, consulta los siguientes recursos: