Wie das Android Kalender-Team mit Baseline-Profilen App-Start- und -Verzögerungen verbesserte

Baseline-Profile verbessern die Codeausführung um bis zu 30 %, indem Dolmetscher- und Just-in-Time-Kompilierung (JIT) Schritte für gängige User Journeys. Mit Baseline-Profilen können Sie die Nutzererfahrungen auswählen, optimieren möchten und dabei helfen, den App-Start zu verbessern, Verzögerungen zu reduzieren und vieles mehr. zu verbesserten Geschäftsmesswerten wie Nutzerbindung und Bewertungen führen. Weitere Informationen zu Baseline Profile.

Das Android Kalender-Team implementierte Baseline-Profile und stellte fest, dass etwa 20% der App Verbesserung der Startzeit und Reduzierung der langsamen oder eingefrorenen Frames um etwa 50 % Hier finden Sie was sie von Anfang bis Ende getan haben, um diese Leistungssteigerungen zu erreichen, beschloss, zur Messung der Auswirkungen Baseline-Profile zu verwenden.

Cloud-Profile und Baseline-Profile

Das Android Kalender-Team hatte bereits Cloud Profile zu erstellen, die sind eine weitere PGO-Methode, die auf realen Benutzern basiert. mit der App interagieren. So funktionieren Cloud-Profile und Baseline-Profile vergleichen:

Profiltyp Einrichten User Journeys eingeschlossen Funktioniert am besten, wenn Nutzer: Wirkung erzielt Unterstützte Android-Versionen

Cloud-Profile

Standardmäßig aktiviert

Automatisch anhand realer Nutzerdaten ausgewählt

Groß

Innerhalb weniger Tage

Android 9 (API-Level 28) und höher

Referenzprofile

Von Ihnen konfiguriert

Von dir ausgewählt

Alle Größen

Sofort

Android 7 (API-Level 24) und höher

Ein Hauptgrund dafür, dass das Android Kalender-Team beschlossen hat, Baseline-Profile hinzuzufügen ihre Codebasis darauf zurückzuführen war, dass sie einen schnelleren wöchentlichen Veröffentlichungszyklus durchlaufen mussten. Obwohl Cloud-Profile eine erhebliche Leistungssteigerung bieten, dauert es ein bis zwei Tage, nach der App-Einführung optimal nutzen können, da sie sich auf reale Nutzerdaten aggregiert werden. Cloud-Profile durch Baseline ergänzen Profile bieten Nutzern mehr Zeit, um eine optimale Leistung zu erzielen bevor die nächste App-Version veröffentlicht wird.

Außerdem war es für das Android Kalender-Team wichtig, auswählen, welche kritischen User Journeys (CUJs) in die für die Verwendung von Baseline-Profilen.

Im Allgemeinen empfehlen wir, zusätzlich zu Cloud-Profilen Baseline-Profile zu verwenden. um eine optimale Leistung zu erzielen.

User Journeys eingeschlossen

Das Android Kalender-Team entschied sich, zwei CUJs in seine Baseline-Profile aufzunehmen:

  • App in der Terminübersicht öffnen: Das ist anfangs die Standardansicht, die so wichtig ist, für Nutzer optimieren, die die App zum ersten Mal verwenden oder die die Standardeinstellungen.
  • App in der Monatsansicht öffnen: die für viele Nutzer ausgewählte Ansicht je nach Nutzer Daten. Um zu verfolgen, wie Nutzer Ihre App verwenden, können Sie Tools wie Firebase.

Im Allgemeinen sollten Sie die CUJs hinzufügen, die für das Unternehmen profitabel sind (falls zutreffend) und am häufigsten verwendete CUJs. Weitere Informationen zur Auswahl Zu optimierende CUJs siehe Was Sie enthalten.

Implementierung

Das Android Kalender-Team verwendet einen internen Wrapper für die Jetpack-Makro-Benchmark-Bibliothek zum Generieren von Basisprofilen zur einfachen Integration in interne Tools und Skalierbarkeit.

Hier ist die MacroBenchmark-Testkonfiguration für das Öffnen der App im Zeitplan Ansicht:

@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)
    }

Auswirkungen mit kontrollierten Releases messen

Da Baseline-Profile eng mit dem APK gekoppelt sind, mit dem sie ausgeliefert werden und vor der Ausführung Ihrer App eingebunden werden, ist es nicht möglich, um ihre Auswirkungen zu ermitteln. Das Android Kalender-Team war jedoch Mithilfe von kontrollierten Releases können Sie die Auswirkungen genau messen. Dabei veröffentlichen Sie die neue App-Version im Grunde an Nutzer, die eine ähnliche Version wie der vorherige Release verwenden.

Mit Baseline Profiles stellte das Unternehmen folgende unmittelbare, signifikante in mehreren Bereichen verbessert. Diese Statistiken werden über ein breites Spektrum und für alle Nutzer, die in der Terminübersicht und in der Monatsansicht beginnen haben wahrscheinlich die größten Vorteile, aber auch andere Nutzer profitieren aufgrund der Optimierung gemeinsamer Prozesse wie das Laden von Kalenderdaten aus dem Datenbank.

  • Der Medianwert für die Latenz beim Starten interaktiver Anwendungen (häufigstes Szenario) ist von 775 ms bis 644 ms (17%)
  • Der Medianwert für die Kaltstartlatenz sank von 1.058 ms auf 901 ms (15%)
  • Der Medianwert für die Warmstartlatenz sank von 453 ms auf 378 ms (17%)
  • Der Medianwert der Schwankungen der Framerate sank bei der Terminübersicht und den Monatsansichten um 42–60 %.

Wenn Sie Cloud-Profile in Verbindung mit Baseline verwenden Profile, bei denen die Verbesserungen im Laufe dieses Zeitraums in der ersten Woche, da Cloud-Profile generiert werden. Sie sollten aber trotzdem signifikante Leistungssteigerungen verzeichnen, wenn Baseline-Profile zusätzlich zu anderen von Ihnen implementierten Optimierungen.

Weitere Informationen zu den Tools und Funktionen finden Sie in den folgenden Ressourcen: