Benchmarking to sposób na sprawdzanie i monitorowanie wydajności aplikacji. Możesz regularnie uruchamiać testy porównawcze, aby analizować i debugować problemy z wydajnością oraz sprawdzać, czy nie wprowadzasz regresji w ostatnich zmianach.
Android udostępnia 2 biblioteki porównawcze i 2 metody analizowania i testowania różnych sytuacji w aplikacji: Macrobenchmark i Microbenchmark.
Macrobenchmark
Biblioteka Macrobenchmark mierzy dłuższe interakcje użytkowników, takie jak uruchamianie, interakcje z interfejsem użytkownika i animacja. Biblioteka zapewnia bezpośrednią kontrolę nad środowiskiem wydajności, które testujesz. Umożliwia sterowanie kompilacją i rozpoczynanie oraz zatrzymywanie aplikacji, aby bezpośrednio mierzyć rzeczywiste uruchamianie aplikacji lub przewijanie.
Biblioteka Macrobenchmark wstrzykuje zdarzenia i monitoruje wyniki zewnętrznie z aplikacji testowej utworzonej z Twoimi testami. Dlatego podczas pisania testów porównawczych nie wywołujesz kodu aplikacji bezpośrednio, tylko poruszasz się po niej jako użytkownik.
Mikrotest porównawczy
Biblioteka Microbenchmark umożliwia przeprowadzanie testów porównawczych kodu aplikacji bezpośrednio w pętli. Jest to wskaźnik służący do pomiaru pracy procesora, który ocenia wydajność w najlepszym przypadku, np. uruchomiony na gorąco kod JIT (Just in Time) i dostępy do dysku w pamięci podręcznej, które możesz zaobserwować w pętli wewnętrznej lub w przypadku określonej funkcji często wykonywanej. Biblioteka może mierzyć tylko kod, który możesz wywołać bezpośrednio w ramach izolacji.
Jeśli aplikacja musi przetwarzać złożoną strukturę danych lub zawierać konkretny algorytm wymagający dużych zasobów obliczeniowych, który jest wywoływany wielokrotnie podczas jej działania, może to być dobry przypadek do przeprowadzenia testów porównawczych. Możesz też mierzyć elementy interfejsu. Możesz np. mierzyć koszt RecyclerView
wiązania elementów, czas potrzebny na napełnienie układu lub jak wymagający jest z perspektywy wydajności przelot układu i pomiarów klasy View
.
Nie możesz jednak mierzyć, w jaki sposób porównania przyczyniają się do ogólnych wrażeń użytkowników. W niektórych przypadkach testowanie porównawcze nie informuje, czy udało Ci się poprawić wąskie gardło, np. płynność lub czas uruchamiania aplikacji. Dlatego ważne jest, aby najpierw zidentyfikować te wąskie gardła za pomocą Profilatora Androida. Gdy znajdziesz kod, który chcesz zbadać i zoptymalizować, możesz szybko i łatwo uruchomić pętlę z benchmarkiem, aby uzyskać mniej wiarygodne wyniki, które pozwolą Ci skupić się na jednym obszarze ulepszeń.
Biblioteka Microbenchmark podaje tylko informacje o aplikacji, a nie o całym systemie. Dlatego najlepiej sprawdza się w analizowaniu skuteczności w sytuacjach związanych z aplikacją, a nie w przypadku problemów z całym systemem.
Porównanie biblioteki z benchmarkami
Macrobenchmark | Mikrotest porównawczy | |
---|---|---|
Wersja API | 23 i nowsze | 14 i nowsze |
Funkcja | Pomiar punktów wejścia lub interakcji na wysokim poziomie, np. uruchamiania aktywności lub przewijania listy. | pomiar pojedynczych funkcji; |
Zakres | Testowanie pełnej aplikacji poza procesem. | Test pracy procesora w trakcie działania. |
Szybkość | Średnia szybkość iteracji. Może ona trwać dłużej niż minutę. | Szybka iteracja. Często trwa mniej niż 10 sekund. |
Śledzenie | Wyniki są dostarczane z śladami profilowania. | Opcjonalne próbkowanie i śledzenie metody. |
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Tworzenie profili podstawowych {:#creating-profile-rules}
- Biblioteka JankStats
- Przegląd pomiarów skuteczności aplikacji