Zachowanie Microbenchmark możesz skonfigurować za pomocą tych argumentów pomiarowych. 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 Edytuj i wybierz konfigurację, którą chcesz edytować.
Rysunek 1. Edytuj konfigurację uruchomienia. - Aby edytować argumenty pomiarów, kliknij
Rysunek 2. Zmień argument pomiarowy.
obok pola Argumenty pomiarów.
- Kliknij
Rysunek 3. Dodaj argument dotyczący pomiarów.
i dodaj wymagany argument instrumentation.
Jeśli test porównawczy jest uruchamiany z poziomu wiersza poleceń, użyj -P
android.testInstrumentationRunnerArguments.[name of the argument]
:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling
Jeśli wywołujesz bezpośrednio polecenie instrumentu (co może mieć miejsce w środowiskach testowania 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.
additionalTestOutputDir
Konfiguruje miejsce na urządzeniu, w którym są zapisywane raporty porównywania wydajności w formacie JSON i wyniki profilowania.
- Typ argumentu: ciąg znaków ścieżki do pliku
- Domyślnie: zewnętrzny katalog pliku APK testu
androidx.benchmark.cpuEventCounter.enable (eksperymentalny)
Zlicza zdarzenia związane z procesorem, które są określone w parametrye androidx.benchmark.cupEventCounter.events
.
Wymaga dostępu roota.
- Typ argumentu: wartość logiczna
- Domyślna wartość: false
androidx.benchmark.cpuEventCounter.events (eksperymentalnie)
Określa, które typy zdarzeń związanych z procesorem mają być zliczane. Aby użyć tego argumentu, zmienna androidx.benchmark.cpuEventCounter.enable
musi być ustawiona na wartość true
.
- Typ argumentu: lista ciągów oddzielonych przecinkami.
- Dostępne opcje:
Instructions
CPUCycles
L1DReferences
L1DMisses
BranchInstructions
BranchMisses
L1IReferences
L1IMisses
- Domyślne:
Instructions
,CpuCycles
,BranchMisses
androidx.benchmark.dryRunMode.enable
Umożliwia uruchamianie testów porównawczych w pojedynczej pętli, aby sprawdzić, czy działają prawidłowo.
Oznacza to, że:
- Błędy konfiguracji nie są wymuszane (na przykład po to, aby ułatwić uruchamianie testów poprawności na emulatorach).
- Test porównawczy wykonuje tylko jedną pętlę bez rozgrzewki.
- pomiary i ścieżki nie są rejestrowane, aby skrócić czas działania;
Pozwala to zoptymalizować przepustowość testu i sprawdzanie logiki benchmarku w porównaniu z poprawnością budowy i pomiarów.
- Typ argumentu: wartość logiczna
- Domyślnie:
false
androidx.benchmark.iterations
Zastępuje docelową liczbę iteracji opartą na czasie, aby zapewnić stałą ilość pracy. Jest to zwykle przydatne tylko wtedy, gdy włączono profilowanie, aby zapewnić spójność ilości pracy wykonywanej w śladzie profilowania podczas porównywania różnych implementacji lub przebiegów. W innych przypadkach może to obniżyć dokładność lub stabilność pomiarów.
- Typ argumentu: liczba całkowita
- Domyślnie: nieokreślone
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.output.enable
Umożliwia zapisanie pliku JSON z wynikiem w pamięci zewnętrznej.
- Typ argumentu: wartość logiczna
- Domyślnie:
true
androidx.benchmark.profiling.mode
Umożliwia przechwytywanie plików z wykresami podczas uruchamiania testów porównawczych. Dostępne opcje znajdziesz w artykule Profilowanie za pomocą mikrobenchmarków.
Pamiętaj, że niektóre wersje systemu operacyjnego Android nie obsługują śledzenia metody bez wpływu na kolejne pomiary. Microbenchmark zgłasza wyjątek, aby temu zapobiec, więc używaj argumentu domyślnego do przechwytywania śladów metody tylko wtedy, gdy jest to bezpieczne. Zobacz problem #316174880.
- Typ argumentu: ciąg znaków
- Dostępne opcje:
MethodTracing
StackSampling
None
- Domyślnie: bezpieczna wersja
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 do przekształcenia w ostrzeżenia.
- Typ argumentu: lista ciągów znaków
- Dostępne opcje:
DEBUGGABLE
LOW-BATTERY
EMULATOR
CODE-COVERAGE
UNLOCKED
SIMPLEPERF
ACTIVITY-MISSING
- Domyślnie: pusta lista
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Argumenty instrumentacji testów porównawczych makro
- Profilowanie mikrobenchmarku
- Tworzenie profili podstawowych {:#creating-profile-rules}