Jak zespół Kalendarza na Androida usprawnił uruchamianie i zacinanie się aplikacji dzięki profilom Baseline

Profile Baseline przyspieszają wykonywanie kodu nawet o 30% dzięki tłumacz i kompilacja „just-in-time” (JIT) w przypadku typowych ścieżek użytkowników. Profile podstawowe umożliwiają wybór ścieżek użytkowników chcą zoptymalizować aplikację, ułatwiają uruchamianie aplikacji, To z kolei przekłada się na lepsze wskaźniki biznesowe, takie jak utrzymanie użytkowników i oceny. Więcej informacji o punkcie odniesienia Profile.

Zespół Kalendarza na Androida wdrożył profile podstawowe i zaobserwował, że około 20% aplikacji skrócenie czasu uruchamiania i ok. 50% skrócenie liczby spowolnionych lub zablokowanych klatek. Oto w jaki sposób odniosły sukcesy. Chodzi o to, dlaczego postanowiliśmy wykorzystać Profile Baseline do pomiaru wpływu.

Profile Cloud a profile podstawowe

Zespół Kalendarza na Androida korzystał już z Cloud profile, to kolejna metoda optymalizacji z instrukcjami profilowa, oparta na prawdziwym użytkowniku interakcji z aplikacją. Jak działają profile Cloud i profile podstawowe porównaj:

Typ profilu Skonfiguruj Uwzględnione ścieżki użytkownika Sprawdza się najlepiej, gdy użytkownicy Uzyskany wpływ Obsługiwane wersje Androida

Profile Cloud

Domyślnie włączone

Wybierany automatycznie na podstawie rzeczywistych danych użytkownika

Duży

Kilka dni

Android 9 (poziom interfejsu API 28) lub nowszy

Profile podstawowe

Skonfigurowane przez Ciebie

Wybrany przez Ciebie

Wszystkie rozmiary

Natychmiast

Android 7 (poziom interfejsu API 24) lub nowszy

Jednym z głównych powodów, dla których zespół Kalendarza na Androida zdecydował się dodać profile bazowe że baza kodu była możliwa dzięki szybszemu, tygodniowemu cyklowi premierowemu. Profile Cloud zapewniają znaczny wzrost wydajności, ale zajmuje to 1–2 dni po jej premierze mogą osiągnąć szczytowy wpływ, agregując rzeczywiste dane użytkowników. Uzupełnianie profili Cloud za pomocą punktu odniesienia Profile dają użytkownikom więcej czasu na osiągnięcie szczytowej wydajności przed opublikowaniem następnej wersji.

Zespół Kalendarza na Androida bardzo chciał mieć możliwość wybrać, które najważniejsze ścieżki użytkownika są uwzględniane w aplikacji profilu, który można wykorzystać za pomocą profili podstawowych.

Ogólnie zalecamy, aby oprócz profili Cloud używać też profili podstawowych, włączony domyślnie, aby uzyskać jak najlepszą wydajność.

Uwzględnione ścieżki użytkownika

Zespół Kalendarza na Androida postanowił dodać 2 węzły główne do profili podstawowych:

  • Otwieranie aplikacji w widoku harmonogramu: początkowo jest to widok domyślny, więc tak ważne optymalizować pod kątem użytkowników, którzy korzystają z aplikacji po raz pierwszy lub nie domyślnych.
  • Otwieranie aplikacji w widoku miesiąca: widok wybrany dla wielu użytkowników na podstawie i skalowalnych danych. Aby śledzić, jak użytkownicy korzystają z Twojej aplikacji, możesz użyć następujących narzędzi: Firebase.

Ogólnie zalecamy dodanie generatywnej konwersji użytkownika, która jest korzystna dla firmy (jeśli odpowiednie) i najczęstsze z nich. Aby dowiedzieć się więcej o wyborze Optymalizowanie ścieżek użytkownika: Co należy uwzględnić.

Implementacja

Zespół Kalendarza na Androida używa wewnętrznego opakowania Biblioteka Jetpack Macrobenchmark do generowania profili podstawowych, które ułatwiają integrację z wewnętrznymi narzędziami oraz i ogólną skalowalność.

Oto konfiguracja testu porównawczego Macrobenchmark służącego do otwierania aplikacji zgodnie z harmonogramem widok:

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

Pomiar wpływu przy użyciu kontrolowanych wersji

Ponieważ profile podstawowe są ściśle sprzężone z pakietem APK, z którym są dostarczane i uwzględniono przed uruchomieniem aplikacji, nie można przeprowadzić aby poznać ich wpływ. Zespół Kalendarza Android uzyskać dokładny pomiar wpływu przy użyciu kontrolowanych wersji. udostępnić nową wersję tylko wybranej grupie użytkowników i porównać ją do użytkowników, którzy korzystają z wersji podobnej do poprzedniej.

W przypadku profili podstawowych od razu pojawiły się następujące, istotne zmiany: i usprawnianie wielu obszarów. Te statystyki są agregowane w szerokim zakresie urządzeń i wszystkich użytkowników, którzy rozpoczynają wyświetlanie w widoku harmonogramu i miesiąca największe korzyści. Inni użytkownicy z pewnością skorzystają na tym, optymalizacji współdzielonych procesów, takich jak wczytywanie danych kalendarza w bazie danych.

  • Mediana czasu oczekiwania na uruchomienie aplikacji interaktywnej (najczęstszy scenariusz) skrócił się z Od 775 do 644 ms (17%)
  • Mediana czasu oczekiwania na uruchomienie „na zimno” zmniejszyła się z 1058 ms do 901 ms (15%)
  • Mediana czasu oczekiwania na uruchomienie częściowo z pamięci skróciła się z 453 do 378 ms (17%)
  • Mediana liczby klatek w harmonogramie i wyświetleniach miesiąca spadła o 42–60%

Pamiętaj, że jeśli używasz profili Cloud w połączeniu z punktem odniesienia Profile, w których możesz zauważyć poprawę, prawdopodobnie będą się nieco zmniejszać przez pierwszy tydzień, w miarę generowania profili Cloud. Nadal jednak można zaobserwować znaczący wzrost wydajności, stosując profile Baseline. wprowadzone optymalizacje.

Więcej informacji o narzędziach i funkcjach znajdziesz w tych materiałach: