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:
- Aby edytować konfigurację uruchomienia, kliknij kolejno Edytuj i konfigurację.
- Aby edytować argumenty pomiarów, kliknij Więcej, a następnie Argumenty pomiarów.
- Dodaj wymagany argument instrumentacji, klikając Dodaj w sekcji Instrumentacja Parametry dodatkowe.
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ą funkcjidebuggable=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
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Argumenty instrumentacji mikrobenchmarków
- Tworzenie profili podstawowych
- Biblioteka JankStats