Настройте поведение 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 напрямую (что может иметь место в средах тестирования CI), передайте аргумент am instrument
с -e
:
adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
Дополнительные сведения о настройке тестов в CI см. в разделе Бенчмаркинг в CI.
ДополнительныйTestOutputDir
Настраивает, где на устройстве сохраняются отчеты об тестах JSON и результаты профилирования.
- Тип аргумента: строка пути к файлу.
- По умолчанию: проверить внешний каталог APK.
androidx.benchmark.cpuEventCounter.enable (экспериментальный)
Подсчитывает события ЦП, указанные в androidx.benchmark.cupEventCounter.events
. Требуется root-доступ.
- Тип аргумента: логический
- По умолчанию: ложь
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.iterations
Переопределяет целевое количество итераций, управляемое временем, чтобы обеспечить постоянный объем работы. Обычно это полезно только при включенном профилировании , чтобы обеспечить согласованный объем работы, выполняемой в трассировке профилирования при сравнении различных реализаций или запусков. В других сценариях это, вероятно, снижает точность или стабильность измерений.
- Тип аргумента: целое число
- По умолчанию: не указано
androidx.benchmark.junit4.SideEffectRunListener
Вы можете получить противоречивые результаты тестирования, если во время выполнения теста выполняется несвязанная фоновая работа.
Чтобы отключить фоновую работу во время тестирования производительности, установите тип аргумента инструментария listener
на androidx.benchmark.junit4.SideEffectRunListener
.
- Тип аргумента: строка
- Доступные варианты:
-
androidx.benchmark.junit4.SideEffectRunListener
-
- По умолчанию: не указано
androidx.benchmark.output.enable
Включает запись результирующего файла JSON во внешнее хранилище.
- Тип аргумента: логический
- По умолчанию:
true
androidx.benchmark.profiling.mode
Позволяет захватывать файлы трассировки во время выполнения тестов. Доступные параметры см. в разделе «Профилирование микробенчмарка» .
Обратите внимание, что некоторые версии ОС Android не поддерживают трассировку методов без влияния на последующие измерения. Чтобы предотвратить это, Microbenchmark генерирует исключение, поэтому используйте аргумент по умолчанию для захвата трассировок метода только тогда, когда это безопасно. См. выпуск № 316174880 .
- Тип аргумента: строка
- Доступные варианты:
-
MethodTracing
-
StackSampling
-
None
-
- По умолчанию: безопасная версия
MethodTracing
, которая фиксирует трассировку метода только в том случае, если устройство может сделать это, не влияя на измерения.
androidx.benchmark.suppressErrors
Принимает список ошибок, разделенных запятыми, которые преобразуются в предупреждения.
- Тип аргумента: список строк
- Доступные варианты:
-
DEBUGGABLE
-
LOW-BATTERY
-
EMULATOR
-
CODE-COVERAGE
-
UNLOCKED
-
SIMPLEPERF
-
ACTIVITY-MISSING
-
- По умолчанию: пустой список.
Рекомендуется для вас
- Примечание. Текст ссылки отображается, когда JavaScript отключен.
- Аргументы инструментария макробенчмарка
- Профилирование микробенчмарка
- Создание базовых профилей {:#creating-profile-rules}