Domyślnie mikrobenchmarki podają informacje o czasie i alokacji wykonanego kodu. Jeśli chcesz sprawdzić, dlaczego mierzony kod działa wolno, sprawdź ślad metody (przechwycony domyślnie w obsługiwanych wersjach systemu operacyjnego) lub wybierz inne konfiguracje profilowania.
Aby wybrać konfigurację profilowania, dodaj argument androidx.benchmark.profiling.mode
z jednym z argumentów MethodTracing
(domyślny), StackSampling
lub None
, jak pokazano w następującym fragmencie kodu.
Więcej informacji o opcjach znajdziesz w artykule Rejestrowanie metod Java/Kotlin.
MethodTracing
jest odpowiednikiem śledzenia, a StackSampling
– próbkowania 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" } }
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 Android Studio, w wynikach mikrobenchmarków kliknij link Ślad metody lub Ślad próbkowania stosu.
MethodTracing
Śledzenie metod jest przydatne, gdy chcesz zoptymalizować kod, ponieważ może pomóc Ci zidentyfikować metody, które zajmują więcej czasu niż inne. Następnie możesz skupić się na optymalizacji metod, które mają największy wpływ na skuteczność.
Profilowanie odbywa się po pomiarze kodu, więc test generuje zarówno dokładne wyniki pomiaru czasu, jak i profilowanie.
Śledzenie metod jest domyślnie włączone.
StackSampling
Śledzenie próbek może też pomóc w identyfikacji kosztownych metod bez obciążenia wydajnościowego związanego ze śledzeniem metod. Jeśli jednak aplikacja wejdzie do metody po zarejestrowaniu wywołań w zestawie wywołań i wyjdzie z niej przed kolejnym zarejestrowaniem, wywołanie metody nie zostanie zarejestrowane. Aby prawidłowo śledzić metody o krótkim cyklu życia, użyj śledzenia metod zamiast śledzenia próbek.
W przypadku próbkowania stosu benchmark próbkuje stosy wywołań po zakończeniu rozgrzewki. Za pomocą argumentów instrumentacji możesz kontrolować zachowanie próbkowania, np. częstotliwość próbkowania 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
- Wartość domyślna 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.
androidx.benchmark.profiling.skipWhenDurationRisksAnr
- Pomija śledzenie metody, gdy może to spowodować błąd ANR. Należy pozostawić tę opcję włączoną podczas przebiegów CI, ponieważ błędy ANR mogą powodować problemy podczas długich przebiegów CI.
- Typ argumentu: wartość logiczna
- Domyślna wartość to
true
Brak
Ten argument nie rejestruje pliku profilowania. Informacje o czasie i przydziałach są nadal mierzone.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Argumenty instrumentacji mikrobenchmarków
- Przeprowadzanie testów porównawczych w ramach ciągłej integracji