Настройте поведение библиотеки с помощью следующих аргументов инструментария. Вы можете добавить их в конфигурацию 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.enabledRules=BaselineProfile
Если вы вызываете команду am instrument
напрямую (что может иметь место в средах непрерывного тестирования), передайте аргумент am instrument
с помощью -e
:
adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner
Дополнительную информацию о настройке бенчмарков в CI см. в разделе Бенчмаркинг в CI.
androidx.benchmark.compilation.enabled
Позволяет отключить компиляцию между каждой итерацией бенчмарка. По умолчанию целевое приложение переустанавливается и перекомпилируется между каждым бенчмарком с учетом CompilationMode
, переданного в measureRepeated
. Отключение этой опции позволяет пропустить как переустановку, так и компиляцию, например, если вы хотите полностью скомпилировать целевое приложение перед запуском набора тестов и запустить все бенчмарки на этом полностью скомпилированном целевом приложении.
- Тип аргумента: логический
- По умолчанию:
true
androidx.benchmark.dryRunMode.enable
Позволяет запускать тесты производительности в одном цикле для проверки их корректной работы. Его можно использовать вместе с обычными тестами в рамках проверки.
- Тип аргумента: логический
- По умолчанию:
false
androidx.benchmark.enabledRules
Позволяет фильтровать прогоны только по одному типу теста: генерация базового профиля или макробенчмарк-тест. Поддерживаются также списки, разделённые запятыми.
- Тип аргумента : строка
- Доступные варианты:
-
Macrobenchmark
-
BaselineProfile
-
- По умолчанию: не указано
androidx.benchmark.fullTracing.enable
Включает точки трассировки androidx.tracing.perfetto
, такие как трассировка композиции Jetpack Compose.
Вам необходимо настроить свой проект для захвата трассировки состава из бенчмарков. Подробнее см. в разделе «Захват трассировки с помощью Jetpack Macrobenchmark» .
- Тип аргумента : логический
- По умолчанию :
false
androidx.benchmark.killExistingPerfettoRecordings
По умолчанию Benchmark удаляет все существующие записи Perfetto (System Trace) при запуске новой трассировки, чтобы уменьшить помехи. Чтобы отключить это поведение, передайте false
.
- Тип аргумента: логический
- По умолчанию:
true
androidx.benchmark.profiling.mode
Позволяет захватывать файлы трассировки во время выполнения бенчмарков. Доступные параметры те же, что и для библиотеки Microbenchmark. Подробнее см. в описании на странице «Профилирование Microbenchmark» .
- Тип аргумента: строка
- Доступные варианты:
-
MethodTracing
-
StackSampling
-
None
-
- По умолчанию:
None
androidx.benchmark.startupProfiles.enable
Позволяет отключить генерацию профилей запуска во время бенчмаркинга.
- Тип аргумента : логический
- По умолчанию:
true
androidx.benchmark.suppressErrors
Принимает список ошибок, разделенных запятыми, для преобразования в предупреждения.
- Тип аргумента : список строк
Доступные варианты:
DEBUGGABLE
Ошибка
DEBUGGABLE
указывает на то, что целевой пакет запускается сdebuggable=true
в манифесте, что значительно снижает производительность выполнения для поддержки функций отладки. Чтобы избежать этой ошибки, запускайте бенчмарки сdebuggable=false
. Аргумент debuggable влияет на скорость выполнения таким образом, что улучшения в бенчмарках могут не отразиться на реальном пользовательском опыте или привести к снижению производительности релиза.LOW-BATTERY
При низком уровне заряда батареи устройства часто снижают производительность, чтобы сэкономить заряд, например, отключая крупные ядра. Это происходит даже при подключении устройств к электросети. Отключайте эту ошибку только в том случае, если вы намеренно профилируете приложение с пониженной производительностью.
EMULATOR
Ошибка
EMULATOR
указывает на то, что тест выполняется на эмуляторе, который не является репрезентативным для реальных пользовательских устройств. Улучшения, достигнутые в тесте на эмуляторе, могут не отразиться на реальном устройстве или привести к снижению производительности. Вместо этого для тестирования следует использовать физическое устройство. Будьте предельно осторожны при подавлении этой ошибки.NOT-PROFILEABLE
Целевой пакет
$packageName
запущен без<profileable shell=true>
. Profileable требуется в Android 10 и 11, чтобы Macrobenchmark мог собирать подробную информацию о трассировке целевого процесса, например, разделы трассировки системы, определённые в приложении или библиотеках. Отказ от этой ошибки следует устранять с особой осторожностью.METHOD-TRACING-ENABLED
В запуске Macrobenchmark для тестируемого приложения включена трассировка методов. Это приводит к тому, что виртуальная машина работает медленнее обычного, поэтому учитывайте метрики из файлов трассировки только в относительных единицах, например, сравнивая скорость первого и второго запусков. Подавление этой ошибки может привести к неточным результатам при сравнении бенчмарков для сборок с разными параметрами трассировки методов.
По умолчанию : пустой список
дополнительныйTestOutputDir
Настраивает место сохранения на устройстве отчетов о производительности JSON и результатов профилирования.
- Тип аргумента: строка пути
- По умолчанию: внешний каталог тестового APK
слушатель
Результаты бенчмарка могут оказаться непоследовательными, если во время его выполнения выполняется не связанная с ним фоновая работа.
Чтобы отключить фоновую работу во время бенчмаркинга, установите тип аргумента инструментария listener
на androidx.benchmark.junit4.SideEffectRunListener
.
- Тип аргумента: строка
- Доступные варианты:
-
androidx.benchmark.junit4.SideEffectRunListener
-
- По умолчанию: не указано
Рекомендовано для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Аргументы в пользу инструментария Microbenchmark
- Создание базовых профилей
- Библиотека JankStats