Настройте поведение Microbenchmark с помощью следующих аргументов инструментария. Вы можете добавить их в конфигурацию Gradle или применить непосредственно при запуске инструментария из командной строки. Чтобы задать эти аргументы для всех запусков тестов Android Studio и командной строки, добавьте их в testInstrumentationRunnerArguments
:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
Вы также можете настроить аргументы инструментирования при запуске тестов в Android Studio. Чтобы изменить аргументы, выполните следующие действия:
- Чтобы изменить конфигурацию запуска, нажмите кнопку «Изменить» и выберите конфигурацию, которую вы хотите изменить.
Рисунок 1. Редактирование конфигурации запуска. - Отредактируйте аргументы инструментирования, нажав
Рисунок 2. Отредактируйте аргумент об инструментировании. рядом с полем «Аргументы инструментирования» . - Нажмите «
Рисунок 3. Добавьте аргумент об инструментировании. и добавьте требуемый аргумент инструментария.
Если вы запускаете тест из командной строки, используйте -P android.testInstrumentationRunnerArguments.[name of the argument]
:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling
Если вы вызываете команду am instrument напрямую (что может иметь место в средах непрерывного тестирования), передайте аргумент am instrument
с помощью -e
:
adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
Дополнительную информацию о настройке бенчмарков в CI см. в разделе Бенчмаркинг в CI.
androidx.benchmark.cpuEventCounter.enable (экспериментальный)
Подсчитывает количество событий ЦП, указанных в androidx.benchmark.cupEventCounter.events
. Требуется root-доступ.
- Тип аргумента: логический
- По умолчанию: false
androidx.benchmark.cpuEventCounter.events (экспериментальный)
Указывает, какие типы событий ЦП следует учитывать. Для использования этого аргумента параметр androidx.benchmark.cpuEventCounter.enable
должен быть установлен в true
.
- Тип аргумента: список строк, разделенных запятыми
- Доступные варианты:
-
Instructions
-
CPUCycles
-
L1DReferences
-
L1DMisses
-
BranchInstructions
-
BranchMisses
-
L1IReferences
-
L1IMisses
-
- По умолчанию:
Instructions
,CpuCycles
,BranchMisses
androidx.benchmark.dryRunMode.enable
Позволяет запускать тесты в одном цикле для проверки их корректной работы.
Это означает:
- Ошибки конфигурации не учитываются (например, чтобы упростить запуск регулярных тестов корректности на эмуляторах)
- Бенчмарк проходит только один цикл без разминки.
- Измерения и трассировки не фиксируются для сокращения времени выполнения.
Это оптимизирует производительность тестирования и проверяет логику эталонного теста на корректность сборки и измерений.
- Тип аргумента: логический
- По умолчанию:
false
androidx.benchmark.killExistingPerfettoRecordings
По умолчанию Benchmark удаляет все существующие записи Perfetto (System Trace) при запуске новой трассировки, чтобы уменьшить помехи. Чтобы отключить это поведение, передайте false
.
- Тип аргумента: логический
- По умолчанию:
true
androidx.benchmark.output.enable
Позволяет записывать результирующий JSON-файл во внешнее хранилище.
- Тип аргумента: логический
- По умолчанию:
true
androidx.benchmark.profiling.mode
Позволяет захватывать файлы трассировки во время выполнения бенчмарков. Доступные параметры см. в разделе «Профилирование микробенчмарка» .
Обратите внимание, что некоторые версии ОС Android не поддерживают трассировку методов без влияния на последующие измерения. Microbenchmark генерирует исключение, чтобы предотвратить это, поэтому используйте аргумент по умолчанию для записи трассировок методов только тогда, когда это безопасно. См. Issue #316174880 .
- Тип аргумента: строка
- Доступные варианты:
-
MethodTracing
-
StackSampling
-
None
-
- По умолчанию: безопасная версия
MethodTracing
, которая фиксирует трассировку метода только в том случае, если устройство может это сделать, не влияя на измерения.
androidx.benchmark.suppressErrors
Принимает список ошибок, разделенных запятыми, для преобразования в предупреждения.
- Тип аргумента: список строк
- Доступные варианты:
-
DEBUGGABLE
-
LOW-BATTERY
-
EMULATOR
-
CODE-COVERAGE
-
UNLOCKED
-
SIMPLEPERF
-
ACTIVITY-MISSING
-
- По умолчанию: пустой список
дополнительныйTestOutputDir
Настраивает место сохранения на устройстве отчетов о производительности JSON и результатов профилирования.
- Тип аргумента: строка пути к файлу
- По умолчанию: внешний каталог тестового APK
слушатель
Результаты бенчмарка могут оказаться непоследовательными, если во время его выполнения выполняется не связанная с ним фоновая работа.
Чтобы отключить фоновую работу во время бенчмаркинга, установите тип аргумента инструментария listener
на androidx.benchmark.junit4.SideEffectRunListener
.
- Тип аргумента: строка
- Доступные варианты:
-
androidx.benchmark.junit4.SideEffectRunListener
-
- По умолчанию: не указано
Рекомендовано для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Аргументы в пользу инструментария макробенчмарка
- Профиль микробенчмарка
- Создать базовые профили {:#creating-profile-rules}