Testy porównawcze to sposób na sprawdzenie 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 i animacje. Biblioteka zapewnia bezpośrednią kontrolę nad środowiskiem wydajności, które testujesz. Umożliwia sterowanie kompilacją oraz uruchamianie i zatrzymywanie aplikacji, aby bezpośrednio mierzyć rzeczywiste uruchamianie aplikacji lub przewijanie.
Biblioteka Macrobenchmark wstrzykuje zdarzenia i monitoruje wyniki z zewnętrznej 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 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 wywoływanej. 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 wiązania elementu RecyclerView
, czas potrzebny na napełnienie układu lub obciążenie układu i pomiaru klasy View
pod kątem wydajności.
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ą Android Profilera. Gdy znajdziesz kod, który chcesz zbadać i zoptymalizować, możesz szybko i łatwo uruchomić pętlę z benchmarkiem, aby uzyskać mniej wiarygodne wyniki, co pozwoli Ci skupić się na jednym obszarze ulepszeń.
Biblioteka Microbenchmark podaje tylko informacje o aplikacji, a nie o całym systemie. Dlatego najlepiej sprawdza się on w analizowaniu skuteczności w sytuacjach związanych z aplikacją, a nie w sytuacjach, które mogą być związane z ogólnymi problemami z 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 wykonywania. |
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