Pojęcia i implementacja Jetpack Compose
Testy porównawcze to sposób na sprawdzanie i monitorowanie wydajności aplikacji. Możesz regularnie przeprowadzać testy porównawcze, aby analizować i debugować problemy z wydajnością oraz zapobiegać wprowadzaniu regresji w ostatnich zmianach.
Android udostępnia 2 biblioteki i podejścia do analizy porównawczej, które umożliwiają analizowanie i testowanie różnych sytuacji w aplikacji: Macrobenchmark i Microbenchmark.
Makrotest porównawczy
Biblioteka Macrobenchmark mierzy większe interakcje użytkowników, takie jak uruchamianie, interakcje z interfejsem i animacje. Biblioteka zapewnia bezpośrednią kontrolę nad testowanym środowiskiem wydajności. Umożliwia kontrolowanie kompilacji oraz uruchamianie i zatrzymywanie aplikacji w celu bezpośredniego pomiaru rzeczywistego uruchamiania lub przewijania aplikacji.
Biblioteka Macrobenchmark wstrzykuje 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, ale poruszasz się po aplikacji jako użytkownik.
Mikrotest porównawczy
Biblioteka Microbenchmark umożliwia testowanie kodu aplikacji bezpośrednio w pętli. Służy do pomiaru pracy procesora, która ocenia wydajność w najlepszym przypadku – np. rozgrzany JIT (Just in Time) i buforowany dostęp do dysku – którą można zaobserwować w przypadku pętli wewnętrznej lub konkretnej funkcji hot. Biblioteka może mierzyć tylko kod, który można wywołać bezpośrednio w izolacji.
Oto przykłady sytuacji, w których warto korzystać z analizy porównawczej:
- gdy aplikacja musi przetworzyć złożoną strukturę danych;
- gdy aplikacja ma określony algorytm wymagający dużej mocy obliczeniowej, który jest wywoływany wielokrotnie podczas jej działania;
Możesz też mierzyć elementy interfejsu. Możesz na przykład zmierzyć koszt wiązania elementu RecyclerView, czas potrzebny na rozszerzenie układu lub wydajność etapu układu i pomiaru klasy View.
Nie możesz jednak zmierzyć, jak przypadki testowe wpływają na ogólne wrażenia użytkownika. W niektórych przypadkach testy porównawcze nie pokazują, czy udało się wyeliminować wąskie gardło, np. gubienie klatek czy długi czas uruchamiania aplikacji. Dlatego ważne jest, aby najpierw zidentyfikować te wąskie gardła za pomocą Profilera Androida. Po znalezieniu kodu, który chcesz przeanalizować i zoptymalizować, możesz wielokrotnie uruchomić pętlę testu porównawczego, aby uzyskać wyniki z mniejszą ilością szumu. Dzięki temu możesz skupić się na jednym obszarze wymagającym poprawy.
Biblioteka Microbenchmark podaje informacje tylko o aplikacji, a nie o całym systemie. Dlatego najlepiej sprawdza się przy analizowaniu wydajności w sytuacjach specyficznych dla aplikacji, a nie tych, które mogą dotyczyć ogólnych problemów z systemem.
Porównanie bibliotek testów porównawczych
| Makrotest porównawczy | Mikrotest porównawczy | |
|---|---|---|
| Funkcja | Mierz punkty wejścia lub interakcje wysokiego poziomu, takie jak uruchomienie aktywności lub przewijanie listy. | Mierz poszczególne funkcje. |
| Zakres | Test całej aplikacji poza procesem. | Test działania procesora w trakcie procesu. |
| Szybkość | Średnia szybkość iteracji. Może przekraczać minutę. | Szybkie tempo iteracji. Często zajmuje to mniej niż 10 sekund. |
| Śledzenie | Wyniki zawierają ślady systemowe. | Wyniki domyślnie zawierają minimalne śledzenie systemu i ślad metody. |
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy język JavaScript jest wyłączony.
- Tworzenie profili podstawowych {:#creating-profile-rules}
- Biblioteka JankStats
- Przegląd pomiaru wydajności aplikacji