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

Настройте поведение 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 напрямую (что может иметь место в средах тестирования 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
  • По умолчанию: пустой список.
{% дословно %} {% дословно %} {% дословно %} {% дословно %}