Mejorar el rendimiento de la aplicación con perfiles básicos



O cómo mejorar el tiempo de inicio hasta en un 40%

Publicado por Kateryna Semenova, ingeniera de DevRel; Rahul Ravikumar, ingeniero informático; Chris Craik, ingeniero informático

EL TEXTO ALTERNATIVO IR AQUÍ

¿Por qué es importante el tiempo de inicio?

Muchas aplicaciones encuentran una correlación entre el rendimiento de la aplicación y la participación del usuario. La gente espera que las aplicaciones sean reactivo Y rápido carga. Tiempo de inicio es una de las principales métricas para el rendimiento y la calidad de la aplicación.

Algunos de nuestros socios ya han invertido mucho tiempo y recursos en optimizar el lanzamiento de la aplicación. Por ejemplo, eche un vistazo a la historia de Facebook.

En esta entrada del blog hablaremos de Perfiles básicos y cómo las aplicaciones y las bibliotecas mejoran el rendimiento, incluido el tiempo de inicio hasta 40%. Si bien esta publicación de blog se enfoca en el inicio, los perfiles básicos también mejoran significativamente el bloqueo.

Historia

Android 9 (API nivel 28) introdujo perfiles de optimización ART en Play Cloud para mejorar los tiempos de inicio de la aplicación. En promedio, hemos visto que los inicios en frío de las aplicaciones son al menos un 15 % más rápidos en una variedad de dispositivos cuando los perfiles en la nube están disponibles.

¿Cómo funcionan los perfiles?

Cuando la aplicación se inicia por primera vez después de la instalación o actualización, su código se ejecuta en modo interpretado hasta que se JATted. En un APK, el código Java y Kotlin se compila como bytecode dex, pero no se compila completamente en código de máquina (desde Android 6), debido al costo de almacenar y cargar aplicaciones completamente compiladas. Las clases y los métodos que se utilizan con frecuencia en la aplicación, así como los que se utilizan para iniciar la aplicación, se registran en un archivo de perfil. Una vez que el dispositivo entra en modo inactivo, ARTE compilar aplicaciones basadas en estos perfiles. Esto acelera los lanzamientos de aplicaciones posteriores.

A partir de Android 9 (nivel de API 28), Google Play también ofrece perfiles en la nube. Cuando una aplicación se ejecuta en un dispositivo, los perfiles generados por ART se cargan desde la aplicación Play Store y se agregan a la nube. Una vez que se han cargado suficientes perfiles para una aplicación, la aplicación Play usa el perfil agregado para las instalaciones posteriores.

Problema

Si bien los perfiles en la nube son excelentes cuando están disponibles, no siempre están listos para usar cuando se instala una aplicación. La recopilación y agregación de perfiles suele llevar varios días, lo cual es un problema cuando muchas aplicaciones se actualizan semanalmente. Muchos usuarios instalarán una actualización antes de que el perfil de la nube esté disponible. El equipo de Google Android ha comenzado a buscar otras formas de mejorar la latencia del perfil.

Solución

Perfiles básicos son un nuevo mecanismo para proporcionar perfiles que se pueden usar en Android 7 (API nivel 24) y superior. Un perfil base es un perfil ART generado por Complemento Gradle de Android utilizando un formato de perfil legible por humanos que pueden proporcionar las aplicaciones y las bibliotecas. Un ejemplo podría verse así:

HSPLandroidx/compose/runtime/ComposerImpl;->updateValue(Ljava/lang/Object;)V
HSPLandroidx/compose/runtime/ComposerImpl;->updatedNodeCount(I)I
HLandroidx/compose/runtime/ComposerImpl;->validateNodeExpected()V
PLandroidx/compose/runtime/CompositionImpl;->applyChanges()V
HLandroidx/compose/runtime/ComposerKt;->findLocation(Ljava/util/List;I)I

Ejemplo para la biblioteca Compose.

El perfil binario se almacena en una ubicación específica en el directorio de activos APK (assets/dexopt/baseline.prof).

Los perfiles básicos se crean durante la fase de creación, se envían como parte del APK a Play y luego se envían desde Play a los usuarios cuando se descarga una aplicación. Cubren la brecha en la canalización del perfil de la nube de ART, cuando los perfiles de la nube aún no están disponibles, y se unen automáticamente a los perfiles de la nube cuando lo están.

Este diagrama muestra el flujo de trabajo básico del perfil desde la creación hasta la entrega al usuario final.

Este diagrama muestra el flujo de trabajo básico del perfil desde la creación hasta la entrega al usuario final.

Una de las mayores ventajas de los perfiles básicos es que se pueden desarrollar y evaluar en la zona para que los desarrolladores puedan ver mejoras realistas en el rendimiento del usuario final. También son compatibles con una versión anterior de Android (7 y superior) que los perfiles en la nube, que solo están disponibles a partir de Android 9.

Impacto

desarrolladores de aplicaciones

A principios de 2021, Google Maps pasó de un ciclo de lanzamiento de dos semanas a uno de una semana. Las actualizaciones más frecuentes significaron una eliminación más frecuente de la precompilación local y más usuarios experimentaron inicios lentos sin perfiles de Play Cloud. Uso de perfiles básicos, Google Maps mejoró el tiempo promedio de inicio en un 30% y vi un corresponsal 2.4% aumento de búsquedauna inmensa ventaja para una aplicación tan establecida.

Desarrolladores de bibliotecas

El código en una biblioteca es como el de una aplicación: no está completamente compilado de forma predeterminada, lo que puede ser un problema si realiza un trabajo significativo en la ruta de inicio crítica.

Esfera de mochila propulsora es una biblioteca de interfaz de usuario que no forma parte de la imagen del sistema Android y, por lo tanto, no se compila por completo una vez instalada, a diferencia de gran parte del código del kit de herramientas Android View. Esto causó problemas de rendimiento, especialmente en los primeros lanzamientos en frío de la aplicación.

Para resolver este problema, Marque usar el instalador de perfiles. Proporciona reglas de perfil básicas que reducen los tiempos de inicio y bloqueos en las aplicaciones de Compose.

La página de resultados de búsqueda de Google PlayStore se ha reescrito con Compose. Después de incorporar las reglas de perfil básicas de Compose, tiempo para ver la página de resultados de búsqueda inicial con aproximadamente un 40 % de imágenes mejoradas.

El equipo de Android también agregó los perfiles básicos a los relevantes. AndroidX bibliotecas Esto beneficia a todas las aplicaciones de Android que usan estas bibliotecas. Se encontró un diseño de restricción reglas del perfil de envío reduce los tiempos de cuadro de animación en más de un milisegundo.

Cómo usar perfiles básicos


Crear un perfil base personalizado

Todos los desarrolladores de aplicaciones y bibliotecas pueden beneficiarse de la inclusión de perfiles principales. Idealmente, los desarrolladores crean perfiles para sus rutas de usuario más críticas para garantizar que esas rutas tengan un rendimiento rápido constante, independientemente de la disponibilidad de los perfiles en la nube. Echa un vistazo a la guía detallada sobre cómo configurar perfiles básicos para desarrolladores de aplicaciones y bibliotecas.


Actualizar dependencias

Si no está listo para generar perfiles básicos para su aplicación en este momento, aún puede aprovechar esto actualizando sus dependencias. Si compila con el complemento Gradle de Android 7.1.0-alpha05 o posterior, obtendrá perfiles básicos incluidos en el APK que ya proporcionan las bibliotecas (como mochila propulsora). Google Play llena su aplicación con estos perfiles al momento de la instalación. Puedes integrar estos perfiles como parte de la construcción de su aplicación.


Medir las mejoras

No olvides medir las mejoras. Seguir los pasos sobre cómo medir la bota con el perfil generado localmente.

Dar opinion

Por favor comparte sus comentarios y háganos saber su experiencia!

Compruebe también

La actualización de CameraX hace que las cámaras duales simultáneas sean aún más fáciles

Publicado por Donovan McMurray – Ingeniero de relaciones con desarrolladores CámaraXLa biblioteca de cámaras Jetpack …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *