Argumenty instrumentacji macrobenchmark

Zachowanie biblioteki możesz konfigurować za pomocą tych argumentów pomiarów. 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 kolejno Edytuj i konfigurację.
    edytuj konfigurację uruchomienia
    Rysunek 1. Edytuj konfigurację uruchomienia.
  2. Aby edytować argumenty pomiarów, kliknij Więcej, a następnie Argumenty pomiarów.
    edytować argumenty pomiarów;
    Rysunek 2. Edytuj argumenty pomiaru.
  3. Dodaj wymagany argument instrumentacji, klikając Dodaj w sekcji Instrumentacja Parametry dodatkowe.
    dodać wymagany argument instrumentacji;
    Rysunek 3. Dodaj wymagany argument pomiarowy.

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

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile

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

adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner

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

androidx.benchmark.compilation.enabled

Umożliwia wyłączenie kompilacji między każdą iteracją testu porównawczego. Domyślnie aplikacja docelowa jest ponownie instalowana i skompilowana między każdym testem porównawczym, aby zachować wartość CompilationMode przekazaną do funkcji measureRepeated. Wyłączenie tej opcji pozwala pominąć zarówno ponowną instalację, jak i kompilację, jeśli np. chcesz najpierw w pełni skompilować aplikację docelową, a potem uruchomić zestaw testów i wszystkie testy porównawcze na tej w pełni skompilowanej aplikacji.

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

androidx.benchmark.dryRunMode.enable

Umożliwia uruchamianie testów porównawczych w pojedynczej pętli w celu sprawdzenia, czy działają prawidłowo. Możesz go używać w ramach zwykłych testów w celu weryfikacji.

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

androidx.benchmark.enabledRules

Umożliwia filtrowanie testów do jednego typu testu: generowania profilu bazowego lub testu makrobenchmarku. Obsługiwane są też listy rozdzielone przecinkami.

  • Typ argumentu: ciąg znaków
  • Dostępne opcje:
    • Macrobenchmark
    • BaselineProfile
  • Domyślnie: brak określenia

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.fullTracing.enable

Umożliwia androidx.tracing.perfetto punkty śledzenia, np. śledzenie komponowania w Jetpack Compose.

Aby móc śledzić skład z testów porównawczych, musisz skonfigurować projekt. Więcej informacji znajdziesz w artykule Pozyskiwanie śladu za pomocą Jetpacka i Macrobenchmark.

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

androidx.benchmark.profiling.mode

Umożliwia przechwytywanie plików z wykresami podczas uruchamiania testów porównawczych. Dostępne opcje są takie same jak w bibliotece Microbenchmark. Więcej informacji znajdziesz w opisach w sekcji Profilowanie testu Microbenchmark.

  • Typ argumentu: ciąg znaków
  • Dostępne opcje:
    • MethodTracing
    • StackSampling
    • None
  • Domyślnie: None

androidx.benchmark.startupProfiles.enable

Umożliwia wyłączenie generowania profili uruchamiania podczas porównywania.

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

androidx.benchmark.suppressErrors

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

  • Typ argumentu: lista ciągów znaków
  • Dostępne opcje:

    • DEBUGGABLE

      Błąd DEBUGGABLE wskazuje, że pakiet docelowy jest uruchamiany z wartością debuggable=true w pliku manifestu, co znacznie zmniejsza wydajność w czasie wykonywania, aby umożliwić korzystanie z funkcji debugowania. Aby uniknąć tego błędu, przeprowadzaj testy porównawcze za pomocą funkcji debuggable=false. Argument debuggable wpływa na szybkość wykonywania w taki sposób, że ulepszenia w benchmarku mogą nie przełożyć się na wrażenia użytkownika lub mogą pogorszyć wydajność wersji.

    • LOW-BATTERY

      Gdy poziom baterii jest niski, urządzenia często zmniejszają wydajność, aby oszczędzać pozostałą baterię, na przykład przez wyłączenie dużych rdzeni. Dzieje się tak nawet wtedy, gdy urządzenia są podłączone. Tę opcję należy pominąć tylko wtedy, gdy celowo profilujesz aplikację z obniżoną wydajnością.

    • EMULATOR

      Błąd EMULATOR informuje, że test porównawczy jest wykonywany na emulowanym urządzeniu, które nie jest reprezentatywne dla rzeczywistych urządzeń użytkowników. Ulepszenia benchmarków emulatora mogą nie przełożyć się na wrażenia użytkownika lub mogą obniżyć wydajność rzeczywistego urządzenia. Do testów porównawczych należy użyć fizycznego urządzenia. Wyłączanie tego błędu należy stosować z bardzo dużą ostrożnością.

    • NOT-PROFILEABLE

      Uruchomiony pakiet docelowy $packageName nie zawiera elementu <profileable shell=true>. Profilowanie jest wymagane w Androidzie 10 i 11, aby Macrobenchmark mógł rejestrować szczegółowe informacje o śledzeniu z procesu docelowego, takie jak sekcje śledzenia systemu zdefiniowane w aplikacji lub bibliotekach. Wyłączanie tego błędu należy stosować z bardzo dużą ostrożnością.

    • METHOD-TRACING-ENABLED

      W przypadku aplikacji, której dotyczy test porównawczy, włączone jest śledzenie metod. Powoduje to, że maszyna wirtualna działa wolniej niż zwykle, dlatego dane z pliku śladu należy rozpatrywać w ujęciu względnym, np. porównując szybkość pierwszego uruchomienia z drugim. Pominnięcie tego błędu może spowodować nieprawidłowe wyniki, jeśli porównujesz wartości referencyjne dla wersji kompilacji z różnymi opcjami śledzenia metod.

  • Domyślnie: pusta lista

additionalTestOutputDir

Konfiguruje miejsce na urządzeniu, w którym są zapisywane raporty testów porównawczych w formacie JSON i wyniki profilowania.

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