Differenza tra profili di base e profili di avvio

Questo documento spiega la differenza tra i profili di base e i profili di avvio.

Puoi utilizzare il plug-in Gradle per i profili di base per acquisire automaticamente i file dei profili di base leggibili generati dai test BaselineProfileRule. Durante la creazione dell'app, Android Gradle Plugin (AGP) compila queste regole del profilo leggibili in un formato binario, compresso come baseline.prof all'interno dell'Android Package Kit (APK) o dell'Android App Bundle (AAB), che Android Runtime (ART) può utilizzare in modo efficace per la compilazione on-device, a condizione che il profilo binario non superi 1,5 MB.

I file di profilo prodotti in genere sono denominati startup-prof.txt e baseline-prof.txt.

profilo di baseline

Il file del profilo di base contiene un insieme completo di regole che ART utilizza per precompilare i percorsi di codice utilizzati di frequente, il che ottimizza l'avvio dell'app, riduce i problemi di interazione e migliora le prestazioni complessive del runtime.

Il file del profilo di base è in genere un superset delle regole presenti nel profilo di avvio. Questo file include tutte le regole necessarie per l'ottimizzazione dell'avvio dell'app (generate tramite l'attività Gradle baselineProfile), nonché profili aggiuntivi per altri percorsi utente critici. Ad esempio, lo scorrimento e la navigazione tra le diverse schermate.

Queste regole non di avvio vengono generate indipendentemente dal valore del campo di configurazione includeInStartupProfile. Per ulteriori informazioni, consulta la panoramica dei profili di base.

Profilo startup

Il file del profilo di avvio contiene regole ottimizzate in modo specifico per il percorso di avvio dell'app. Durante la compilazione, D8 e R8 utilizzano il bytecode Java per produrre file Dalvik Executable (DEX). Sia D8 che R8 utilizzano i profili di avvio per ottimizzare il layout DEX inserendo il codice di avvio critico nel file .dex principale per un caricamento più rapido delle classi. Per ottenere i miglioramenti delle prestazioni più significativi, il codice di avvio deve essere contenuto in questo file .dex principale. Se le dimensioni cumulative del codice di avvio sono troppo grandi, si verifica un overflow nei file DEX successivi, che spesso vengono compilati con classi e metodi non essenziali e rallentano l'avvio.

Mentre un profilo di avvio fornisce i metadati necessari per l'ottimizzazione del layout DEX, l'ottimizzazione del codice R8 può essere molto efficace per facilitare questo processo. Rimuovendo il codice inutilizzato e riducendo le dimensioni del bytecode, R8 riduce l'ingombro totale della logica di avvio. Questa riduzione aumenta la probabilità che il codice critico rimanga all'interno del file .dex principale, impedendo l'overflow e garantendo un'esecuzione più efficiente in una gamma più ampia di versioni di Android. In genere, devi impostare includeInStartupProfile su true solo per gli scenari di test essenziali per la visualizzazione iniziale dell'app.

Per saperne di più, consulta la panoramica dei profili di avvio.