Profilowanie mikrotestu

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.