Domyślnie mikrobenchmarki podają informacje o czasie i alokacji wykonanego kodu. Jeśli chcesz sprawdzić, dlaczego mierzony kod działa wolno, możesz uruchomić testy porównawcze z dołączonym profilerem procesora.
Aby wybrać konfigurację profilowania, dodaj argument instrumentation
runner androidx.benchmark.profiling.mode
z jednym z argumentów MethodTracing
, StackSampling
lub None
, jak pokazano w tym fragmencie kodu.
Więcej informacji o dostępnych opcjach znajdziesz w artykule Wybieranie konfiguracji nagrywania.
MethodTracing
jest odpowiednikiem „Śledzenia metod Java”, a StackSampling
– „Przykładowych metod Java” zgodnie z definicją 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" } }
Podczas profilowania testu porównawczego wyjściowy plik .trace
jest kopiowany na host w katalogu oprócz wyników JSON. Aby sprawdzić wyniki profilowania w profilu CPU w Android Studio, kliknij Plik > Otwórz. Więcej informacji o czytaniu i interpretowaniu śladów znajdziesz w artykule Sprawdzanie śladów.
Śledzenie metod
Śledzenie metod jest przydatne, gdy chcesz zoptymalizować kod, ponieważ może pomóc Ci zidentyfikować metody, które wymagają więcej czasu na wykonanie niż inne. Następnie możesz 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.
StackSampling
Ś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ń w zrzucie stosu, a metoda zakończy działanie przed kolejnym zarejestrowaniem, wywołanie metody nie zostanie zarejestrowane. Aby prawidłowo śledzić metody z krótkimi cyklami życia, użyj śledzenia metody zamiast śledzenia próbek.
W przypadku próbkowania stosu dane porównawcze obejmują wywołania stosu po zakończeniu rozgrzewki. Za pomocą argumentów instrumentacji możesz kontrolować częstotliwość próbowania i czas trwania próbkowania.
W Androidzie 10 (interfejs API 29) i nowszych wersjach próbkowanie stosu korzysta z Simpleperf do próbkowania łańcuchów wywołań aplikacji, w tym kodu C++. Na Androidzie 9 (poziom interfejsu API 28) i starszych do rejestrowania próbek stosu używany jest interfejs Debug.startMethodTracingSampling
.
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 czasie i przydziałach są nadal mierzone.
Polecane dla Ciebie
- Uwaga: tekst linku wyświetla się, gdy JavaScript jest wyłączony
- Argumenty instrumentacji mikrotestów
- Przeprowadzanie testów porównawczych w ramach ciągłej integracji