Argumenty instrumentacji mikroporównawczej

Zachowanie Microbenchmark możesz skonfigurować za pomocą tych argumentów pomiarowych. Możesz je dodać do konfiguracji Gradle lub zastosować bezpośrednio podczas uruchamiania pomiarów z poziomu wiersza poleceń. Aby ustawić te argumenty dla wszystkich testów uruchamianych w Android Studio i na wierszu poleceń, dodaj je do pliku testInstrumentationRunnerArguments:

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

Argumenty instrumentacji możesz też skonfigurować podczas uruchamiania testów porównawczych w Android Studio. Aby zmienić argumenty:

  1. Aby edytować konfigurację uruchomienia, kliknij Edytuj i wybierz konfigurację, którą chcesz edytować.
    Rysunek 1. Edytuj konfigurację uruchomienia.
  2. Aby edytować argumenty pomiarów, kliknij  obok pola Argumenty pomiarów.
    Rysunek 2. Zmień argument pomiarowy.
  3. Kliknij  i dodaj wymagany argument instrumentation.
    Rysunek 3. Dodaj argument dotyczący pomiarów.

Jeśli test porównawczy jest uruchamiany z poziomu wiersza poleceń, użyj -P android.testInstrumentationRunnerArguments.[name of the argument]:

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling

Jeśli wywołujesz bezpośrednio polecenie instrumentu (co może mieć miejsce w środowiskach testowania CI), przekaż argument do am instrument za pomocą -e:

adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner

Więcej informacji o konfigurowaniu testów porównawczych w CI znajdziesz w artykule Testy porównawcze w CI.

additionalTestOutputDir

Konfiguruje miejsce na urządzeniu, w którym są zapisywane raporty porównywania wydajności w formacie JSON i wyniki profilowania.

  • Typ argumentu: ciąg znaków ścieżki do pliku
  • Domyślnie: zewnętrzny katalog pliku APK testu

androidx.benchmark.dryRunMode.enable

Umożliwia uruchamianie testów porównawczych w pojedynczej pętli, aby sprawdzić, czy działają prawidłowo.

Oznacza to, że:

  • Błędy konfiguracji nie są wymuszane (na przykład po to, aby ułatwić uruchamianie testów poprawności na emulatorach).
  • Test porównawczy wykonuje tylko jedną pętlę bez rozgrzewki.
  • pomiary i ścieżki nie są rejestrowane, aby skrócić czas działania;

Pozwala to zoptymalizować przepustowość testu i sprawdzanie logiki benchmarku w porównaniu z poprawnością budowy i pomiarów.

  • Typ argumentu: wartość logiczna
  • Domyślnie: false

androidx.benchmark.iterations

Zastępuje docelową liczbę iteracji opartą na czasie, aby zapewnić stałą ilość pracy. Jest to zwykle przydatne tylko wtedy, gdy włączono profilowanie, aby zapewnić spójność ilości pracy wykonywanej w śladzie profilowania podczas porównywania różnych implementacji lub przebiegów. W innych przypadkach może to obniżyć dokładność lub stabilność pomiarów.

  • Typ argumentu: liczba całkowita
  • Domyślnie: nieokreślone

androidx.benchmark.junit4.SideEffectRunListener

Jeśli podczas testu porównawczego wykonywane są nieistotne zadania w tle, wyniki mogą być niespójne.

Aby wyłączyć działanie w tle podczas testowania porównawczego, ustaw parametr listener typu instrumentacji na androidx.benchmark.junit4.SideEffectRunListener.

  • Typ argumentu: ciąg znaków
  • Dostępne opcje:
    • androidx.benchmark.junit4.SideEffectRunListener
  • Domyślnie: nieokreślone

androidx.benchmark.output.enable

Umożliwia zapisanie pliku JSON z wynikiem w pamięci zewnętrznej.

  • Typ argumentu: wartość logiczna
  • Domyślnie: true

androidx.benchmark.profiling.mode

Umożliwia przechwytywanie plików z wykresami podczas uruchamiania testów porównawczych. Dostępne opcje znajdziesz w artykule Profilowanie za pomocą mikrobenchmarków.

Pamiętaj, że niektóre wersje systemu operacyjnego Android nie obsługują śledzenia metody bez wpływu na kolejne pomiary. Microbenchmark zgłasza wyjątek, aby temu zapobiec, więc używaj argumentu domyślnego do przechwytywania śladów metody tylko wtedy, gdy jest to bezpieczne. Zobacz problem #316174880.

  • Typ argumentu: ciąg znaków
  • Dostępne opcje:
    • MethodTracing
    • StackSampling
    • None
  • Domyślnie: bezpieczna wersja MethodTracing, która rejestruje ślad metody tylko wtedy, gdy urządzenie może to zrobić bez wpływu na pomiary.

androidx.benchmark.suppressErrors

Akceptuje rozdzieloną przecinkami listę błędów do przekształcenia w ostrzeżenia.

  • Typ argumentu: lista ciągów znaków
  • Dostępne opcje:
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • Domyślnie: pusta lista

androidx.benchmark.startupMode.enable (wycofane)

Zmienia konfigurację działania pętli, aby umożliwić testowanie porównawcze kodu podczas uruchamiania. Benchmarki są wykonywane bez pętli rozgrzewania przez 10 pomiary. Aby zminimalizować obciążenie w mikrotestach, zliczanie średniej w pętli jest wyłączone.

  • Typ argumentu: wartość logiczna
  • Domyślnie: false