Microbenchmark 계측 인수

다음 계측 인수로 Microbenchmark의 동작을 구성합니다. Gradle 구성에 추가하거나 명령줄에서 계측을 실행할 때 직접 적용할 수 있습니다. 모든 Android 스튜디오 및 명령줄 테스트 실행에 이러한 인수를 설정하려면 인수를 testInstrumentationRunnerArguments에 추가하세요.

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

Android 스튜디오 벤치마크를 실행할 때 계측 인수를 설정할 수도 있습니다. 인수를 변경하려면 다음 단계를 따르세요.

  1. Edit을 클릭하고 수정하려는 구성을 선택하여 실행 구성을 수정합니다.
    그림 1. 실행 구성 수정
  2. Instrumentation arguments 필드 옆에 있는 를 클릭하여 계측 인수를 수정합니다.
    그림 2. 계측 인수 수정
  3. 를 클릭하고 필요한 계측 인수를 추가합니다.
    그림 3. 계측 인수 추가

명령줄에서 벤치마크를 실행하는 경우 -P android.testInstrumentationRunnerArguments.[name of the argument]를 사용합니다.

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling

am 계측 명령어를 직접 호출하는 경우 (CI 테스트 환경에서 해당할 수 있음) -e를 사용하여 인수를 am instrument에 전달합니다.

adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner

CI에서 벤치마크를 구성하는 방법에 관한 자세한 내용은 CI의 벤치마킹을 참고하세요.

additionalTestOutputDir

JSON 벤치마크 보고서 및 프로파일링 결과를 저장할 기기 내 위치를 구성합니다.

  • 인수 유형: 파일 경로 문자열
  • 기본값: 테스트 APK의 외부 디렉터리

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

벤치마크를 실행하는 동안 트레이스 파일을 캡처할 수 있습니다. 사용 가능한 옵션은 Microbenchmark 프로파일링을 참고하세요.

  • 인수 유형: 문자열
  • 사용 가능한 옵션:
    • MethodTracing
    • StackSampling
    • None
  • 기본값: None

androidx.benchmark.suppressErrors

쉼표로 구분된 오류 목록이 경고로 전환되도록 허용합니다.

  • 인수 유형: 문자열 목록
  • 사용 가능한 옵션:
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • 기본값: 빈 목록

androidx.benchmark.startupMode.enable(지원 중단됨)

루프 동작을 다시 구성하여 시작 시 벤치마킹 코드를 지원합니다. 10회 측정의 경우 벤치마크가 준비 루프 없이 실행됩니다. Microbenchmark의 오버헤드를 최소화하기 위해 루프 평균화가 사용 중지됩니다.

  • 인수 유형: 불리언
  • 기본값: false