Argumenty instrumentacji macrobenchmark

Skonfiguruj działanie biblioteki 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. Aby edytować konfigurację uruchomienia, kliknij Edytuj, a następnie kliknij konfigurację.
    edytować konfigurację uruchamiania,
    Rysunek 1. Edytuj konfigurację uruchomienia.
  2. Edytuj argumenty instrumentacji, klikając Więcej w sekcji Argumenty instrumentacji.
    edytować argumenty instrumentacji,
    Rysunek 2. Edytuj argumenty
    instrumentacji.
  3. Dodaj wymagany argument instrumentacji, klikając Dodaj w sekcji Instrumentacja Dodatkowe parametry.
    dodaj wymagany argument instrumentacji,
    Rysunek 3. Dodaj wymagany argument instrumentation.

Jeśli uruchamiasz test makro z wiersza poleceń, użyj tego polecenia:-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 testowych CI), przekaż 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 poszczególnymi iteracjami testu porównawczego. Domyślnie aplikacja docelowa jest ponownie instalowana i kompilowana między poszczególnymi testami porównawczymi, aby uwzględnić wartość CompilationMode przekazaną do measureRepeated. Wyłączenie tej opcji pozwala pominąć ponowną instalację i kompilację, jeśli np. chcesz w pełni skompilować aplikację docelową raz przed uruchomieniem pakietu testów i przeprowadzić wszystkie testy porównawcze na w pełni skompilowanej aplikacji docelowej.

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

androidx.benchmark.dryRunMode.enable

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

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

androidx.benchmark.enabledRules

Umożliwia filtrowanie przebiegów, aby wyświetlać tylko 1 typ testu: generowanie profilu podstawowego lub test makrobenchmarkowy. Obsługiwane są też listy rozdzielone przecinkami.

  • Typ argumentu: ciąg znaków
  • Dostępne opcje:
    • Macrobenchmark
    • BaselineProfile
  • Domyślna wartość: nie określono

androidx.benchmark.fullTracing.enable

Umożliwia korzystanie z androidx.tracing.perfetto punktów śledzenia, takich jak śledzenie kompozycji Jetpack Compose.

Aby móc rejestrować śledzenie kompozycji z testów porównawczych, musisz skonfigurować projekt. Więcej informacji znajdziesz w artykule Rejestrowanie śladu za pomocą Jetpack Macrobenchmark.

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

androidx.benchmark.killExistingPerfettoRecordings

Benchmark domyślnie kończy wszystkie istniejące nagrania Perfetto (śledzenie systemu), gdy rozpoczyna nowe śledzenie, aby zmniejszyć zakłócenia. Aby wyłączyć to działanie, przekaż wartość false.

  • 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 są takie same jak w przypadku biblioteki Microbenchmark. Więcej informacji znajdziesz w opisach w artykule Profilowanie mikrobenczmarku.

  • Typ argumentu: ciąg
  • Dostępne opcje:
    • MethodTracing
    • StackSampling
    • None
  • Domyślna wartość: None

androidx.benchmark.startupProfiles.enable

Umożliwia wyłączenie generowania profili uruchamiania podczas testów porównawczych.

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

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

      Błąd DEBUGGABLE oznacza, że pakiet docelowy jest uruchomiony z wartością debuggable=true w pliku manifestu, co znacznie obniża wydajność w czasie działania, aby obsługiwać funkcje debugowania. Aby uniknąć tego błędu, uruchom testy porównawcze za pomocą debuggable=false. Argument debuggable wpływa na szybkość wykonywania w sposób, który może sprawić, że ulepszenia w testach porównawczych nie przełożą się na wrażenia prawdziwego użytkownika lub pogorszą wydajność wersji.

    • LOW-BATTERY

      Gdy poziom baterii jest niski, urządzenia często zmniejszają wydajność, aby oszczędzać pozostałą energię, np. wyłączając duże rdzenie. Dzieje się tak nawet wtedy, gdy urządzenia są podłączone do zasilania. Ten błąd należy ignorować tylko wtedy, gdy celowo profilujesz aplikację z mniejszą wydajnością.

    • EMULATOR

      Błąd EMULATOR informuje, że test porównawczy jest przeprowadzany na emulatorze, który nie odzwierciedla urządzeń prawdziwych użytkowników. Ulepszenia benchmarków emulatora mogą nie przekładać się na wrażenia użytkownika lub mogą pogarszać wydajność prawdziwego urządzenia. Zamiast tego użyj urządzenia fizycznego. Tłumienie tego błędu wymaga zachowania szczególnej ostrożności.

    • NOT-PROFILEABLE

      Pakiet docelowy $packageName jest uruchomiony bez <profileable shell=true>. W Androidzie 10 i 11 wymagane jest ustawienie flagi Profileable, aby biblioteka Macrobenchmark mogła rejestrować szczegółowe informacje o śledzeniu z procesu docelowego, takie jak sekcje śledzenia systemu zdefiniowane w aplikacji lub bibliotekach. Tłumienie tego błędu wymaga zachowania szczególnej ostrożności.

    • METHOD-TRACING-ENABLED

      W przypadku aplikacji, dla której przeprowadzana jest analiza porównawcza, włączone jest śledzenie metod. Powoduje to, że maszyna wirtualna działa wolniej niż zwykle, więc dane z plików śledzenia należy rozpatrywać tylko w ujęciu względnym, np. porównując, jak szybko przebiega pierwsze uruchomienie w porównaniu z drugim. Zignorowanie tego błędu może prowadzić do niedokładnych wyników, jeśli porównujesz testy wydajności kompilacji z różnymi opcjami śledzenia metod.

  • Domyślna wartość: pusta lista

additionalTestOutputDir

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

  • Typ argumentu: ciąg ścieżki
  • 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 listener na androidx.benchmark.junit4.SideEffectRunListener.

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