Diferencia entre los perfiles de Baseline y los perfiles de inicio

En este documento, se explica la diferencia entre los perfiles de Baseline y los perfiles de inicio.

Puedes usar el complemento de Gradle para perfiles de Baseline para capturar automáticamente los archivos de perfiles de Baseline legibles generados por las pruebas de BaselineProfileRule. Cuando se compila la app, el complemento de Android para Gradle (AGP) compila estas reglas de perfil legibles por humanos en un formato binario, empaquetado como baseline.prof dentro del kit de paquete de Android (APK) o Android App Bundle (AAB), que Android Runtime (ART) puede usar de manera eficaz para la compilación en el dispositivo, siempre que el perfil binario sea inferior a 1.5 MB.

Por lo general, los archivos de perfil que se producen se denominan startup-prof.txt y baseline-prof.txt.

Perfil de Baseline

El archivo de perfil de Baseline contiene un conjunto integral de reglas que ART usa para precompilar instrucciones de código que se usan con frecuencia, lo que optimiza el inicio de la app, reduce los bloqueos de interacción y mejora el rendimiento general del entorno de ejecución.

Por lo general, el archivo de Perfil de Baseline es un superconjunto de las reglas que se encuentran en tu Perfil de inicio. Este archivo incluye todas las reglas necesarias para la optimización del inicio de la app (generadas a través de la tarea baselineProfile de Gradle), junto con perfiles adicionales para otros recorridos del usuario críticos. Por ejemplo, desplazarse y navegar por diferentes pantallas.

Estas reglas que no son de inicio se generan independientemente del valor del campo de configuración includeInStartupProfile. Para obtener más información, consulta la Descripción general de los perfiles de Baseline.

Perfil de la startup

El archivo de perfil de inicio contiene reglas optimizadas específicamente para la ruta de inicio de tu app. Durante la compilación, D8 y R8 consumen código de bytes Java para producir archivos ejecutables de Dalvik (DEX). Tanto D8 como R8 usan perfiles de inicio para optimizar el diseño de DEX colocando el código de inicio crítico en el archivo .dex principal para una carga de clases más rápida. Para lograr las mayores ganancias de rendimiento, el código de inicio debe estar contenido en este archivo .dex principal. Si el tamaño acumulado del código de inicio es demasiado grande, se desborda en archivos DEX posteriores, que a menudo se completan con clases y métodos no esenciales, lo que ralentiza el inicio.

Si bien un perfil de inicio proporciona los metadatos necesarios para la optimización del diseño de DEX, la optimización del código de R8 puede ser muy eficaz para ayudar en este proceso. Al quitar el código que no se usa y minimizar el bytecode, R8 reduce el tamaño total de la lógica de inicio. Esta reducción aumenta la probabilidad de que el código crítico permanezca dentro del archivo .dex principal, lo que evita el desbordamiento y garantiza una ejecución más eficiente en una gama más amplia de versiones de Android. En general, debes establecer includeInStartupProfile en true solo para las situaciones de prueba esenciales para la visualización inicial de la app.

Para obtener más información, consulta Descripción general de los perfiles de inicio.