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 instrument 명령어를 직접 호출하는 경우 (CI 테스트 환경에서 발생할 수 있음) -e를 사용하여 am instrument에 인수를 전달합니다.

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에 지정된 CPU 이벤트를 집계합니다. 루트 액세스 권한이 필요합니다.

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

androidx.benchmark.cpuEventCounter.events (실험용)

집계할 CPU 이벤트 유형을 지정합니다. 이 인수를 사용하려면 androidx.benchmark.cpuEventCounter.enabletrue로 설정해야 합니다.

  • 인수 유형: 쉼표로 구분된 문자열 목록
  • 사용 가능한 옵션:
    • Instructions
    • CPUCycles
    • L1DReferences
    • L1DMisses
    • BranchInstructions
    • BranchMisses
    • L1IReferences
    • L1IMisses
  • 기본값: Instructions, CpuCycles, BranchMisses

androidx.benchmark.dryRunMode.enable

벤치마크를 단일 루프로 실행하여 제대로 작동하는지 확인할 수 있습니다.

이는 다음을 의미합니다.

  • 구성 오류는 적용되지 않습니다 (예: 에뮬레이터에서 일반적인 정확성 테스트를 더 쉽게 실행할 수 있도록).
  • 벤치마크가 준비 없이 단일 루프만 실행됨
  • 런타임을 줄이기 위해 측정 및 트레이스가 캡처되지 않음

이렇게 하면 빌드 및 측정 정확성보다 테스트 처리량과 벤치마크 로직 검증이 최적화됩니다.

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

androidx.benchmark.killExistingPerfettoRecordings

벤치마크는 기본적으로 간섭을 줄이기 위해 새 트레이스를 시작할 때 기존 Perfetto (시스템 트레이스) 녹화 파일을 종료합니다. 이 동작을 사용 중지하려면 false를 전달하세요.

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

androidx.benchmark.output.enable

결과 JSON 파일을 외부 저장소에 작성할 수 있습니다.

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

androidx.benchmark.profiling.mode

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

일부 Android OS 버전에서는 후속 측정에 영향을 주지 않고 메서드 추적을 지원하지 않습니다. 마이크로벤치마크는 이를 방지하기 위해 예외를 발생시키므로 안전한 경우에만 기본 인수를 사용하여 메서드 트레이스를 캡처하세요. 문제 #316174880을 참고하세요.

  • 인수 유형: 문자열
  • 사용 가능한 옵션:
    • MethodTracing
    • StackSampling
    • None
  • 기본값: 기기가 측정에 영향을 주지 않고 메서드 트레이스를 캡처할 수 있는 경우에만 메서드 트레이스를 캡처하는 안전한 버전의 MethodTracing입니다.

androidx.benchmark.suppressErrors

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

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

additionalTestOutputDir

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

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

listener

벤치마크가 실행되는 동안 관련 없는 백그라운드 작업이 실행되면 일관되지 않은 벤치마크 결과가 발생할 수 있습니다.

벤치마킹 중에 백그라운드 작업을 사용 중지하려면 listener 계측 인수 유형을 androidx.benchmark.junit4.SideEffectRunListener로 설정하세요.

  • 인수 유형: 문자열
  • 사용 가능한 옵션:
    • androidx.benchmark.junit4.SideEffectRunListener
  • 기본값: 지정되지 않음