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 ostatnie zmiany nie powodują regresji.
Android udostępnia 2 biblioteki porównawcze i 2 metody analizowania i testowania różnych rodzajów 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ą oraz uruchamianie i zatrzymywanie aplikacji, aby bezpośrednio mierzyć rzeczywiste uruchamianie aplikacji lub przewijanie.
Biblioteka Macrobenchmark wstawia zdarzenia i monitoruje wyniki zewnętrznie z aplikacji testowej utworzonej na podstawie testów. 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 konkretnej funkcji często wywoływanej. Biblioteka może mierzyć tylko kod, który możesz wywołać bezpośrednio w ramach izolacji.
Testy porównawcze mogą okazać się przydatne, gdy Twoja aplikacja musi przetwarzać złożoną strukturę danych lub mieć określony algorytm wykorzystujący dużo obliczeń, który jest wywoływany wiele razy podczas uruchamiania. Możesz też mierzyć elementy interfejsu. Możesz np. mierzyć koszt RecyclerView
wiązania produktu, czas potrzebny na napełnienie układu lub obciążenie układu i pomiarów 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 sytuacjach analiza porównawcza nie informuje, czy eliminujesz wąskie gardła, takie jak zacinanie czy 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 zakłóceń w wynikach. Dzięki temu możesz 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 sytuacjach, które mogą być związane z ogólnymi problemami z systemem.
Porównanie biblioteki porównań
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. | Testowanie w trakcie pracy procesora. |
Szybkość | Średnia szybkość iteracji. Może przekroczyć minutę. | Szybka iteracja. Często mniej niż 10 sekund. |
Śledzenie | Wyniki otrzymują ślady 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
- Omówienie pomiaru skuteczności aplikacji