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

Настройте поведение библиотеки с помощью следующих аргументов инструментария. Вы можете добавить их в свою конфигурацию 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 напрямую (что может иметь место в средах тестирования CI), передайте аргумент 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. Также поддерживаются списки, разделенные запятыми.

  • Тип аргумента : строка
  • Доступные варианты:
    • Macrobenchmark
    • BaselineProfile
  • По умолчанию: Не указано

androidx.benchmark.junit4.SideEffectRunListener

Вы можете получить противоречивые результаты тестирования, если во время выполнения теста выполняется несвязанная фоновая работа.

Чтобы отключить фоновую работу во время тестирования производительности, установите тип аргумента инструментария listener на androidx.benchmark.junit4.SideEffectRunListener .

  • Тип аргумента: строка
  • Доступные варианты:
    • androidx.benchmark.junit4.SideEffectRunListener
  • По умолчанию: не указано

androidx.benchmark.fullTracing.enable

Включает точки трассировки androidx.tracing.perfetto , такие как трассировка композиции Jetpack Compose.

Вам необходимо настроить свой проект так, чтобы иметь возможность захватывать трассировку композиции из тестов. Дополнительные сведения см. в разделе Захват трассировки с помощью Jetpack Macrobenchmark .

  • Тип аргумента : логический
  • По умолчанию : false

androidx.benchmark.profiling.mode

Позволяет захватывать файлы трассировки во время выполнения тестов. Доступные параметры такие же, как и для библиотеки Microbenchmark — дополнительную информацию см. в описаниях в разделе «Профилирование Microbenchmark» .

  • Тип аргумента: строка
  • Доступные варианты:
    • MethodTracing
    • StackSampling
    • None
  • По умолчанию: None

androidx.benchmark.startupProfiles.enable

Позволяет отключить создание профилей запуска во время сравнительного анализа.

  • Тип аргумента : логический
  • По умолчанию: true

androidx.benchmark.suppressErrors

Принимает список ошибок, разделенных запятыми, которые преобразуются в предупреждения.

  • Тип аргумента : список строк.
  • Доступные варианты:

    • DEBUGGABLE

      Ошибка DEBUGGABLE указывает на то, что целевой пакет работает с debuggable=true в своем манифесте, что резко снижает производительность во время выполнения для поддержки функций отладки. Чтобы избежать этой ошибки, запустите тесты с debuggable=false . Аргумент отладки влияет на скорость выполнения таким образом, что улучшения в тестах могут не распространяться на реальный пользовательский опыт или могут привести к снижению производительности релиза.

    • LOW-BATTERY

      Когда батарея разряжена, устройства часто снижают производительность, чтобы сэкономить заряд батареи, например, отключая большие ядра. Это происходит, даже если устройства подключены к сети. Эту ошибку можно подавлять только в том случае, если вы намеренно профилируете приложение с пониженной производительностью.

    • EMULATOR

      Ошибка EMULATOR говорит о том, что тест выполняется на эмуляторе, который не соответствует реальным пользовательским устройствам. Улучшения в тестах эмулятора могут не быть перенесены на работу реального пользователя или привести к снижению реальной производительности устройства. Вместо этого вам следует использовать физическое устройство для тестирования. Подавите эту ошибку с особой осторожностью.

    • NOT-PROFILEABLE

      Целевой пакет $packageName работает без <profileable shell=true> . Profileable требуется в Android 10 и 11, чтобы позволить Macrobenchmark собирать подробную информацию о трассировке целевого процесса, например разделы трассировки системы, определенные в приложении или библиотеках. Подавите эту ошибку с особой осторожностью.

    • METHOD-TRACING-ENABLED

      При запуске Macrobenchmark для тестируемого приложения включена трассировка методов. Из-за этого виртуальная машина работает медленнее, чем обычно, поэтому рассматривайте метрики из файлов трассировки только в относительном выражении — например, сравнивая скорость первого запуска со вторым. Подавление этой ошибки может привести к неточным результатам, если вы сравниваете тесты для сборок с различными вариантами трассировки методов.

  • По умолчанию : пустой список.

дополнительныйTestOutputDir

Настраивает, где на устройстве сохраняются отчеты об тестах JSON и результаты профилирования.

  • Тип аргумента: строка пути
  • По умолчанию: проверить внешний каталог APK.
{%дословно%} {% дословно %} {%дословно%} {% дословно %}