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ć.
- Aby edytować argumenty pomiarów, kliknij obok pola Argumenty pomiarów.
- Kliknij 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.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
androidx.benchmark.startupMode.enable (wycofane)
Zmienia konfigurację działania pętli, aby umożliwić testowanie porównawcze kodu podczas uruchamiania. Benchmarki są wykonywane bez pętli rozgrzewania przez 10 pomiary. Aby zminimalizować obciążenie w mikrotestach, zliczanie średniej w pętli jest wyłączone.
- Typ argumentu: wartość logiczna
- Domyślnie:
false
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Argumenty instrumentacji w ramach testów porównawczych makro
- Profilowanie mikrobenchmarku
- Tworzenie profili podstawowych {:#creating-profile-rules}