Аргументы инструментария макробенчмарка

Настройте поведение библиотеки с помощью следующих аргументов инструментария. Вы можете добавить их в конфигурацию Gradle или применить непосредственно при запуске инструментария из командной строки. Чтобы задать эти аргументы для всех запусков тестов Android Studio и командной строки, добавьте их в testInstrumentationRunnerArguments :

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

Вы также можете настроить аргументы инструментирования при запуске тестов в Android Studio. Чтобы изменить аргументы, выполните следующие действия:

  1. Отредактируйте конфигурацию запуска, нажав «Изменить» , а затем щелкнув конфигурацию.
    редактировать конфигурацию запуска
    Рисунок 1. Редактирование конфигурации запуска.
  2. Отредактируйте аргументы инструментирования, нажав Подробнее об аргументах инструментирования .
    редактировать аргументы инструментирования
    Рисунок 2. Редактирование аргументов инструментирования.
  3. Добавьте требуемый аргумент инструментария, нажав кнопку в разделе Дополнительные параметры инструментария .
    добавить требуемый аргумент инструментирования
    Рисунок 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
  • По умолчанию: не указано
{%дословно%} {% endverbatim %} {%дословно%} {% endverbatim %}