𝗣𝗿𝗼𝗳𝗶𝗹𝗲-𝗚𝘂𝗶𝗱𝗲𝗱 𝗢𝗽𝘁𝗶𝗺𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝗳𝗼𝗿 𝗔𝗻𝗱𝗿𝗼𝗶𝗱 𝗔𝗽𝗽 𝗦𝘁𝗮𝗿𝘁𝘂𝗽
Wir haben unseren Android Cold Start von 1,2 s auf 380 ms reduziert.
Die meisten Apps laufen beim ersten Start im langsamsten Kompilierungsmodus. Android verwendet den „Interpret-only“-Modus, wenn ein Benutzer Ihre App zum ersten Mal installiert. Das macht den Startup langsam. Das System optimiert den Code erst später während der Leerlaufzeiten.
Sie können dies mithilfe einer dreistufigen Pipeline beheben.
Baseline Profiles erstellen Baseline Profiles teilen dem System mit, welche Klassen zum Zeitpunkt der Installation kompiliert werden sollen. Verwenden Sie Macrobenchmark, um diese in Ihrer CI-Pipeline zu erstellen. Unsere Profile deckten 12 % der Methoden ab, waren aber für 94 % der Startup-Zeit verantwortlich.
DEX Layout Reordering aktivieren Dies ist eine einzige Zeile in Ihren Gradle-Properties. Sie weist R8 an, Startup-Klassen in Ihrer DEX-Datei zusammenzufassen. Dies reduziert Page Faults um 30 % bis 50 %. Wenn Klassen zusammenbleiben, lädt das System weniger unnötige Daten von der Festplatte.
Cloud Profiles nutzen Google Play sammelt Profile von Benutzern und sendet sie an Neuinstallationen. Dies verstärkt Ihre Geschwindigkeitsgewinne.
Die Ergebnisse unserer Tests:
- Ohne Profil: 1.204 ms Cold Start
- Nur Baseline Profile: 620 ms Cold Start
- Baseline + DEX Reorder: 445 ms Cold Start
- Baseline + DEX Reorder + Cloud: 380 ms Cold Start
Wichtige Tipps für Ihren Workflow:
- Erstellen Sie Profile in der CI für jedes Release. Veraltete Profile führen zu Performance-Verlusten.
- Regenerieren Sie Profile, nachdem R8 gelaufen ist. R8 ändert Ihre Codestruktur.
- Verwenden Sie den „Partial“-Kompilierungsmodus in Macrobenchmark. Der „Full“-Modus liefert verfälschte Ergebnisse, die die tatsächliche Nutzererfahrung nicht widerspiegeln.
- Testen Sie auf verschiedenen Android-Versionen. Die Performance-Gewinne variieren zwischen älteren und neueren API-Leveln.
Kombinieren Sie diese Ebenen, um schnellere Apps zu entwickeln.
Quelle: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a