Domyślnie mikrotesty dostarczają informacji na temat czasu alokacje wykonanego kodu. Jeśli chcesz się dowiedzieć, dlaczego mierzone kod działa wolno, możesz przeprowadzać testy porównawcze za pomocą programu profilującego procesora załączony.
Aby wybrać konfigurację narzędzia do profilowania, dodaj instrumentację
argument runu androidx.benchmark.profiling.mode
z jednym z
MethodTracing
, StackSampling
lub
None
zgodnie z tym fragmentem.
Więcej
informacje o dostępnych opcjach znajdziesz w artykule Wybieranie konfiguracji nagrywania.
MethodTracing
jest odpowiednikiem metod „Trace Java Methods” oraz StackSampling
.
jest odpowiednikiem „Przykładowych metod w Javie” zgodnie z definicją podaną w tym dokumencie.
Groovy
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
Kotlin
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
Gdy przeprofilujesz test porównawczy, plik wyjściowy .trace
zostanie skopiowany do hosta w katalogu obok wyników w formacie JSON. Aby sprawdzić wyniki profilowania w profilu CPU w Android Studio, kliknij Plik > Otwórz. Aby dowiedzieć się więcej o:
Interpretowanie i odczytywanie logów czasu znajdziesz w artykule o sprawdzaniu logów czasu.
Śledzenie metod
Śledzenie metod jest przydatne, gdy próbujesz zoptymalizować kod, ponieważ może pomóc w znalezieniu metod, które działają dłużej niż inne. Dostępne opcje a potem skupić się na optymalizacji metod, które mają największy wpływ na skuteczność.
Profilowanie odbywa się sekwencyjnie po pomiarze kodu, więc test generuje zarówno dokładne wyniki pomiaru czasu, jak i profilowania.
Próbkowanie stosu
Śledzenie próbek może też pomóc w identyfikowaniu kosztownych metod bez obciążenia wydajnościowego związanego ze śledzeniem metod. Jeśli jednak aplikacja wejdzie do metody po zarejestrowaniu wywołań i wywołanie zakończy się przed kolejnym zarejestrowaniem, wywołanie metody nie zostanie zarejestrowane. Aby prawidłowo śledzić metody za pomocą w przypadku krótkich cykli życia, należy użyć śledzenia metody zamiast śledzenia próbek.
W przypadku próbkowania stosu wywołań połączeń próbek porównawczych po zakończeniu „rozgrzewki” gotowe. Możesz dostosować częstotliwość próbkowania i czas trwania próbkowania za pomocą instrumentacji. .
W Androidzie 10 (API 29) i nowszych próbkowanie stosu używa Simpleperf do próbkowania.
stosów wywołań aplikacji, w tym kodu C++. W Androidzie 9 (API 28) i starszych wersjach
Debug.startMethodTracingSampling
, aby zarejestrować próbki stosu.
Ten tryb profilowania możesz skonfigurować, dodając kolejne argumenty instrumentacji:
androidx.benchmark.profiling.sampleFrequency
- Liczba próbek stosu do przechwycenia na sekundę.
- Typ argumentu: liczba całkowita
- Domyślna wartość to 1000 próbek na sekundę.
androidx.benchmark.profiling.sampleDurationSeconds
- Czas trwania testu porównawczego.
- Typ argumentu: liczba całkowita
- Domyślna wartość to 5 sekund.
Brak
Ten argument nie przechwytuje pliku profilowania. Informacje o terminach i przydziały są nadal mierzone.
Polecane dla Ciebie
- Uwaga: tekst linku wyświetla się, gdy JavaScript jest wyłączony
- Argumenty instrumentacji mikrotestów
- Uruchamianie testów porównawczych w trybie ciągłej integracji