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

Настройте поведение Microbenchmark с помощью следующих аргументов инструментария. Вы можете добавить их в конфигурацию 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.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
  • По умолчанию: не указано
{% дословно %} {% endverbatim %} {% дословно %} {% endverbatim %}