Domyślnie mikroporównania dostarczają informacji o czasie i alokacji wykonywania kodu. Jeśli chcesz sprawdzić, dlaczego mierzony kod działa wolno, możesz wykonać testy porównawcze z dołączonym programem profilowania procesora.
Aby wybrać konfigurację programu profilującego, dodaj argument mechanizmu uruchamiania androidx.benchmark.profiling.mode
z jednym z argumentów MethodTracing
, StackSampling
lub None
, jak pokazano w tym fragmencie.
Więcej informacji o dostępnych opcjach znajdziesz w artykule Wybieranie konfiguracji nagrywania.
MethodTracing
to odpowiednik metody „Trace Java”, a StackSampling
to odpowiednik „Przykładowych metod Java” zdefiniowanych w tym dokumencie.
Odlotowy
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, wyjściowy plik .trace
jest kopiowany na hosta w katalogu razem z wynikami JSON. Aby sprawdzić wyniki profilowania w narzędziu do profilowania procesora w Android Studio, wybierz Plik > Otwórz. Więcej informacji o odczytywaniu i interpretowaniu 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 identyfikacji metod, które działają dłużej niż inne. Następnie możesz skupić się na optymalizacji metod, które mają największy wpływ na skuteczność.
Profilowanie zachodzi w kolejności po pomiarze kodu, dzięki czemu test zwraca zarówno dokładny czas, jak i wyniki profilowania.
Próbkowanie stosu
Śledzenie próbek może też pomóc w identyfikacji drogich metod bez nakładu pracy związanego z ich wydajnością. Jeśli jednak aplikacja wejdzie na daną metodę po przechwyceniu stosu wywołań, a metoda zostanie zamknięta przed kolejnym zapisem, jej wywołanie nie będzie rejestrowane. Aby prawidłowo śledzić metody o krótkich cyklach życia, zamiast korzystać ze śledzenia próbek, zastosuj śledzenie metod.
W przypadku próbkowania stosu wywołań stosów próbek porównawczych odbywa się po zakończeniu procesu „rozgrzewki”. Częstotliwość próbkowania i czas trwania próbkowania możesz kontrolować za pomocą argumentów instrumentacji.
Na urządzeniach z Androidem w wersji 10 (API 29) i nowszych próbkowanie stosu używa narzędzia Simpleperf do próbowania stosów wywołań aplikacji, w tym kodu w języku C++. Na urządzeniach z Androidem w wersji 9 (API 28) i starszych do przechwytywania próbek stosu używany jest 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
- 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 alokacjach są nadal mierzone.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy JavaScript jest wyłączony
- Argumenty instrumentacji mikrotestów
- Wykonywanie testów porównawczych w trybie ciągłej integracji