Case Studies

Monzo zwiększa wskaźniki skuteczności nawet o 35% dzięki prostej aktualizacji R8

2 minuty czytania

Monzo to brytyjski bank cyfrowy, który ma 15 milionów klientów i stale się rozwija. W miarę skalowania aplikacji zespół inżynierów uznał czas uruchamiania aplikacji za kluczowy obszar do poprawy, ale obawiał się, że będzie to wymagało znacznych zmian w bazie kodu.

Dzięki pełnemu włączeniu optymalizacji R8 firma Monzo osiągnęła ogromny spadek o 35% wskaźnika błędów ANR (Aplikacja nie odpowiada). Ta prosta zmiana pokazała, że skuteczne optymalizacje nie zawsze wymagają złożonych prac inżynieryjnych.

Zwiększanie skuteczności dzięki trybowi pełnemu R8

Firma Monzo uznała tryb pełny R8 za łatwe rozwiązanie, które warto wypróbować. Okazało się, że działa i poprawia skuteczność w każdym obszarze:

  • Niezawodność uruchamiania: uruchamianie „na zimno” poprawiło się o 30%, uruchamianie „na ciepło” o 24%, a uruchamianie „na gorąco” o 14%.
  • Szybkość uruchamiania: czasy uruchamiania P50 poprawiły się o 11%, a czasy uruchamiania P90 o 12%.
  • Skuteczność: ogólny rozmiar aplikacji zmniejszył się o 9%.
  • Stabilność: zmniejszenie liczby błędów ANR o 35%.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

Włączanie optymalizacji za pomocą jednej zmiany

Wiele aplikacji na Androida używa nieaktualnego domyślnego pliku konfiguracyjnego, który wyłącza większość funkcji optymalizatora R8. Główną zmianą, jaką wprowadziła firma Monzo, aby odblokować te ulepszenia wydajności, było zastąpienie domyślnego pliku proguard-android.txt plikiem proguard-android-optimize.txt. Ta zmiana usuwa instrukcję -dontoptimize i umożliwia R8 prawidłowe działanie.

buildTypes {
  release {
    isMinifyEnabled = true
    isShrinkResources = true
    proguardFiles(
      getDefaultProguardFile("proguard-android-optimize.txt"),
    )
  }
}

Po wprowadzeniu tej zmiany warto sprawdzić pliki konfiguracyjne Keep. Te pliki informują R8, które części kodu mają pozostać bez zmian (zwykle dlatego, że są wywoływane dynamicznie lub przez biblioteki zewnętrzne). Uporządkowanie niepotrzebnych reguł Keep oznacza, że R8 może zrobić więcej.

Poprawa wydajności przewijania dzięki profilom podstawowym

Aby jeszcze bardziej poprawić wrażenia użytkowników, firma Monzo wdrożyła profile podstawowe, które są ukierunkowane na wydajność przewijania i renderowania w głównym pliku danych. Ta strategia zapewniła pełną optymalizację najczęstszych ścieżek użytkowników – otwierania aplikacji i przewijania pliku danych. Wpływ na renderowanie był znaczny: wydajność przewijania P90 wzrosła o 71%, a wydajność przewijania P95 o 87%. Przewijanie w aplikacji jest teraz płynniejsze niż wcześniej.

Firma Monzo wbudowała to w proces publikowania, aby utrzymać te ulepszenia w czasie. „Generowanie profilu podstawowego uruchamiamy codziennie (przed uruchomieniem kompilacji nocnych) i po zakończeniu zatwierdzamy najnowsze zmiany” – wyjaśnia Neumayer.

Bądź na bieżąco z nowoczesnym tworzeniem aplikacji na Androida

Doświadczenie firmy Monzo pokazuje, co jest możliwe, gdy na bieżąco śledzisz rekomendacje dotyczące narzędzi do tworzenia aplikacji na Androida. Starsze aplikacje często mają problemy ze złożonym użyciem odbicia, ale firma Monzo uznała przejście za proste dzięki odpowiedniemu udokumentowaniu reguł Keep. „Zawsze dodajemy komentarz wyjaśniający, dlaczego reguły Keep są na miejscu, abyśmy wiedzieli, kiedy można je usunąć” – mówi Neumayer.

Rada Neumayera dla innych zespołów? Regularnie sprawdzaj swoje praktyki pod kątem aktualnych standardów: „Zapoznaj się z najnowszymi rekomendacjami Google dotyczącymi wydajności aplikacji i sprawdź, czy stosujesz się do wszystkich najnowszych porad”.

Aby rozpocząć i dowiedzieć się więcej o R8, wejdź na https://d.android.com/r8.

Autorzy:

Czytaj dalej