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:
- Aby edytować konfigurację uruchomienia, kliknij Edytuj, a następnie kliknij konfigurację.
Rysunek 1. Edytuj konfigurację uruchomienia. - Edytuj argumenty instrumentacji, klikając
Rysunek 2. Edytuj argumenty instrumentacji.
Więcej w sekcji Argumenty instrumentacji.
- Dodaj wymagany argument instrumentacji, klikając
Rysunek 3. Dodaj wymagany argument instrumentation.
Dodaj w sekcji Instrumentacja
Dodatkowe parametry.
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
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy JavaScript jest wyłączony.
- Argumenty instrumentacji mikropomiarów
- Tworzenie profili podstawowych
- Biblioteka JankStats