기본적으로 Microbenchmark는 실행된 코드의 타이밍과 할당에 관한 정보를 제공합니다. 측정된 코드가 느리게 실행되는 이유를 조사하려면 CPU 프로파일러가 연결된 벤치마크를 실행하면 됩니다. 계측 실행기 인수 androidx.benchmark.profiling.mode
를 MethodTracing
, StackSampling
, None
인수 중 하나와 함께 추가하여(다음 스니펫 참고) 프로파일러 구성을 선택할 수 있습니다. 옵션에 관한 자세한 내용은 기록 구성 선택을 참고하세요.
Groovy
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
Kotlin
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
벤치마크를 프로파일링하면 출력 .trace
파일이 JSON 결과와 함께 호스트의 디렉터리에 복사됩니다. Android 스튜디오에서 File > Open을 사용하여 이 파일을 열고 CPU 프로파일러에서 프로파일링 결과를 검사합니다.
MethodTracing
메서드 추적을 사용하면 메서드 트레이스를 캡처하기 전에 준비 작업을 통해 벤치마크가 호출한 모든 메서드를 기록합니다. 성능 결과는 각 메서드 시작/종료 캡처의 오버헤드에 크게 영향을 받습니다.
StackSampling
스택 샘플링을 사용하면 준비가 완료된 후 벤치마크가 호출 스택을 샘플링합니다. 계측 인수를 사용하여 샘플링 빈도와 샘플링 지속 시간을 제어할 수 있습니다.
Android 10(API 29) 이상에서 스택 샘플링은 Simpleperf를 사용하여 C++ 코드를 비롯한 앱 호출 스택을 샘플링합니다. Android 9(API 28) 이하에서는 Debug.startMethodTracingSampling
을 사용하여 스택 샘플을 캡처합니다.
다른 계측 인수를 추가하여 이 프로파일링 모드를 구성할 수 있습니다.
androidx.benchmark.profiling.sampleFrequency
- 초당 캡처하는 스택 샘플 수
- 인수 유형: 정수
- 기본값: 초당 샘플 1,000개
androidx.benchmark.profiling.sampleDurationSeconds
- 실행할 벤치마크 기간
- 인수 유형: 정수
- 기본값: 5초
없음
프로파일링 파일을 캡처하지 않습니다. 타이밍 및 할당에 관한 정보는 계속 측정됩니다.