Argumenty instrumentacji mikroporównawczej

Skonfiguruj działanie mikrobenczmarku za pomocą tych argumentów instrumentacji. Możesz dodać je do konfiguracji Gradle lub zastosować bezpośrednio podczas uruchamiania instrumentacji z wiersza poleceń. Aby ustawić te argumenty dla wszystkich testów uruchamianych w Android Studio i wierszu poleceń, dodaj je do pliku testInstrumentationRunnerArguments:

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

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

  1. Edytuj konfigurację uruchomienia, klikając Edytuj i wybierając konfigurację, którą chcesz edytować.
    Rysunek 1. Edytuj konfigurację uruchomienia.
  2. Aby edytować argumenty instrumentacji, kliknij  obok pola Argumenty instrumentacji.
    Rysunek 2. Edytuj argument instrumentacji.
  3. Kliknij  i dodaj wymagany argument instrumentacji.
    Rysunek 3. Dodaj argument instrumentacji.

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

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

Jeśli wywołujesz polecenie instrumentu bezpośrednio (co może mieć miejsce w środowiskach testowych 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.

androidx.benchmark.cpuEventCounter.enable (eksperymentalne)

Zlicza zdarzenia procesora określone w androidx.benchmark.cpuEventCounter.events. Wymaga dostępu do roota.

  • Typ argumentu: wartość logiczna
  • Wartość domyślna: false

androidx.benchmark.cpuEventCounter.events (eksperymentalne)

Określa typy zdarzeń związanych z procesorem, które mają być zliczane. Aby użyć tego argumentu, musisz ustawić wartość androidx.benchmark.cpuEventCounter.enable na true.

  • Typ argumentu: lista ciągów znaków oddzielonych przecinkami
  • Dostępne opcje:
    • Instructions
    • CPUCycles
    • L1DReferences
    • L1DMisses
    • BranchInstructions
    • BranchMisses
    • L1IReferences
    • L1IMisses
  • Domyślne wartości: Instructions, CpuCycles, BranchMisses

androidx.benchmark.dryRunMode.enable

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

Oznacza to, że:

  • Błędy konfiguracji nie są wymuszane (np. aby ułatwić przeprowadzanie zwykłych testów poprawności na emulatorach).
  • Test porównawczy wykonuje tylko jedną pętlę bez rozgrzewki.
  • Aby skrócić czas działania, pomiary i ślady nie są rejestrowane.

Optymalizuje to przepustowość testu i weryfikuje logikę testu porównawczego pod kątem poprawności kompilacji i pomiaru.

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

androidx.benchmark.iterations

Określa liczbę pomiarów. Nie określa to bezpośrednio liczby wykonanych pętli, ponieważ każdy pomiar zwykle obejmuje wiele pętli, które są definiowane dynamicznie na podstawie czasu działania podczas rozgrzewki.

  • Typ argumentu: liczba całkowita
  • Domyślna wartość: 50

androidx.benchmark.killExistingPerfettoRecordings

Domyślnie Microbenchmark przerywa wszystkie istniejące nagrania Perfetto (śledzenie systemu) podczas rozpoczynania nowego śledzenia, aby zmniejszyć zakłócenia. Aby wyłączyć to działanie, przekaż wartość false.

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

androidx.benchmark.output.enable

Umożliwia zapisywanie wynikowego pliku JSON w pamięci zewnętrznej.

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

androidx.benchmark.profiling.mode

Umożliwia rejestrowanie plików śledzenia podczas uruchamiania testów porównawczych. Dostępne opcje znajdziesz w sekcji Profilowanie mikrobenczmarku.

Pamiętaj, że niektóre wersje Androida nie obsługują śledzenia metod bez wpływu na kolejne pomiary. Mikrotest zgłasza wyjątek, aby temu zapobiec, więc użyj argumentu domyślnego, aby rejestrować ślady metod tylko wtedy, gdy jest to bezpieczne. Zobacz problem nr 316174880.

  • Typ argumentu: ciąg
  • Dostępne opcje:
    • MethodTracing
    • StackSampling
    • None
  • Domyślnie: bezpieczna wersja funkcji 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, które mają być traktowane jako ostrzeżenia.

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

additionalTestOutputDir

Konfiguruje miejsce zapisywania na urządzeniu raportów porównawczych JSON i wyników profilowania.

  • Typ argumentu: ciąg ścieżki pliku
  • Domyślnie: zewnętrzny katalog testowego pliku APK

detektor

Jeśli podczas testu porównawczego będą wykonywane niezwiązane z nim zadania w tle, wyniki mogą być niespójne.

Aby wyłączyć pracę w tle podczas testów porównawczych, ustaw typ argumentu instrumentacji listener na androidx.benchmark.junit4.SideEffectRunListener.

  • Typ argumentu: ciąg
  • Dostępne opcje:
    • androidx.benchmark.junit4.SideEffectRunListener
  • Wartość domyślna: nieokreślona