다음 계측 인수로 라이브러리의 동작을 구성합니다. Gradle 구성에 추가하거나 명령줄에서 계측을 실행할 때 직접 적용할 수 있습니다. 모든 Android 스튜디오 및 명령줄 테스트 실행에 이러한 인수를 설정하려면 인수를 testInstrumentationRunnerArguments
에 추가하세요.
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
Android 스튜디오 벤치마크를 실행할 때 계측 인수를 설정할 수도 있습니다. 인수를 변경하려면 다음 단계를 따르세요.
- Edit를 클릭한 후 구성을 클릭하여 실행 구성을 수정합니다.
- 계측 인수별 More를 클릭하여 계측 인수를 수정합니다.
- Instrumentation Extra Params에서 Add를 클릭하여 필수 계측 인수를 추가합니다.
명령줄에서 macrobenchmark를 실행하는 경우 -P
android.testInstrumentationRunnerArguments.[name of the argument]
를 사용합니다.
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
am instrument
명령어를 직접 호출하는 경우 (CI 테스트 환경에서 해당할 수 있음) -e
를 사용하여 인수를 am instrument
에 전달합니다.
adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner
CI에서 벤치마크를 구성하는 방법에 관한 자세한 내용은 CI의 벤치마킹을 참고하세요.
androidx.benchmark.compilation.enabled
벤치마크의 각 반복 사이에 컴파일을 사용 중지할 수 있습니다. 기본적으로 타겟 애플리케이션은 다시 설치되고 각 벤치마크 간에 다시 컴파일되어, measureRepeated
에 전달된 CompilationMode
를 준수합니다. 예를 들어 테스트 모음을 실행하기 전에 타겟 앱을 한 번 완전히 컴파일하고 완전히 컴파일된 타겟에 모든 벤치마크를 실행하려는 경우 이 기능을 사용 중지하면 재설치와 컴파일을 모두 건너뛸 수 있습니다.
- 인수 유형: 부울
- 기본값:
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
Jetpack Compose 컴포지션 추적과 같은 androidx.tracing.perfetto
tracepoint를 사용 설정합니다.
벤치마크에서 컴포지션 추적을 캡처할 수 있도록 프로젝트를 설정해야 합니다. 자세한 내용은 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>
없이 실행됩니다. Android 10 및 11에서 Macrobenchmark가 앱 또는 라이브러리에 정의된 시스템 추적 섹션과 같은 타겟 프로세스에서 자세한 트레이스 정보를 캡처할 수 있도록 하려면 Profileable이 필요합니다. 매우 신중하게 이 오류를 억제합니다.METHOD-TRACING-ENABLED
벤치마킹되는 앱의 Macrobenchmark 실행에는 메서드 추적이 사용 설정되어 있습니다. 이로 인해 VM 실행 속도가 평소보다 느려지므로 첫 번째 실행과 두 번째 실행의 속도를 비교하는 경우와 같이 상대적 측면에서만 트레이스 파일의 측정항목을 고려하세요. 이 오류를 억제하면 다른 메서드 추적 옵션과 빌드의 벤치마크를 비교하는 경우 결과가 부정확할 수 있습니다.
기본값: 빈 목록
additionalTestOutputDir
JSON 벤치마크 보고서 및 프로파일링 결과를 저장할 기기 내 위치를 구성합니다.
- 인수 유형: 경로 문자열
- 기본값: 테스트 APK의 외부 디렉터리
추천 서비스
- 참고: JavaScript가 사용 중지되어 있으면 링크 텍스트가 표시됩니다.
- Microbenchmark 계측 인수
- 기준 프로필 만들기
- JankStats 라이브러리