Domyślnie mikrotesty porównawcze dostarczają informacji o czasie i alokacji wykonywanego kodu. Jeśli chcesz sprawdzić, dlaczego mierzony kod działa wolno, sprawdź ślad metody, który jest domyślnie rejestrowany w obsługiwanych wersjach systemu operacyjnego, lub wybierz inne konfiguracje profilowania.
Aby wybrać konfigurację profilera, dodaj argument modułu uruchamiającego instrumentację androidx.benchmark.profiling.mode z jednym z argumentów MethodTracing (domyślny), StackSampling lub None, jak pokazano w tym fragmencie kodu.
Więcej informacji o opcjach znajdziesz w artykule Nagrywanie metod Javy/Kotlina.
MethodTracing jest odpowiednikiem śledzenia, a StackSampling jest odpowiednikiem próbkowania zgodnie z definicją w tym dokumencie.
Dynamiczny
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 profilujesz test porównawczy, plik wyjściowy .trace jest kopiowany na hosta w katalogu obok wyników JSON. Aby sprawdzić wyniki profilowania w Android Studio, kliknij link Ślad metody lub Ślad próbkowania stosu w wynikach mikrotestu porównawczego.
MethodTracing
Śledzenie metod jest przydatne, gdy próbujesz zoptymalizować kod, ponieważ może pomóc Ci zidentyfikować metody, których wykonanie trwa dłużej niż innych. Możesz wtedy skupić się na optymalizacji metod, które mają największy wpływ na skuteczność.
Profilowanie odbywa się po pomiarze kodu, więc test zwraca zarówno dokładne wyniki pomiaru czasu, jak i profilowania.
Śledzenie metod jest domyślnie włączone.
StackSampling
Śledzenie próbek może też pomóc w identyfikowaniu kosztownych metod bez obciążenia związanego ze śledzeniem metod. Jeśli jednak aplikacja wywoła metodę po przechwyceniu stosu wywołań, a metoda zakończy działanie przed następnym przechwyceniem, wywołanie metody nie zostanie zarejestrowane. Aby prawidłowo śledzić metody o krótkich cyklach życia, używaj śledzenia metod zamiast śledzenia próbek.
W przypadku próbkowania stosu test porównawczy próbkuje stosy wywołań po zakończeniu rozgrzewania. Za pomocą argumentów instrumentacji możesz kontrolować zachowanie próbkowania, takie jak częstotliwość i czas trwania.
Na Androidzie 10 (API 29) i nowszych próbkowanie stosu wykorzystuje Simpleperf do próbkowania stosów wywołań aplikacji, w tym kodu C++. Na Androidzie 9 (API 28) i starszych wersjach do przechwytywania próbek stosu używa Debug.startMethodTracingSampling.
Możesz skonfigurować ten tryb profilowania, 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 metod, gdy może ono spowodować błąd ANR. Warto pozostawić tę opcję włączoną w przypadku uruchomień ciągłej integracji, ponieważ błędy ANR mogą powodować problemy podczas długich uruchomień ciągłej integracji.
- Typ argumentu: wartość logiczna
- Domyślna wartość to
true
Brak
Ten argument nie przechwytuje pliku profilowania. Informacje o czasie i przydziałach są nadal mierzone.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy język JavaScript jest wyłączony.
- Argumenty instrumentacji mikrotestu porównawczego
- Uruchamianie testów porównawczych w trybie ciągłej integracji