Macrobenchmark 측정항목 캡처

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

측정항목은 벤치마크에서 추출된 기본 정보 유형입니다. measureRepeated 함수에 List로 전달되므로 측정된 여러 측정항목을 한 번에 지정할 수 있습니다. 벤치마크를 실행하려면 측정항목 유형이 하나 이상 필요합니다.

다음 스니펫은 프레임 타이밍 및 맞춤 트레이스 섹션 측정항목을 캡처합니다.

Kotlin

benchmarkRule.measureRepeated(
    packageName = TARGET_PACKAGE,
    metrics = listOf(
        FrameTimingMetric(),
        TraceSectionMetric("RV CreateView"),
        TraceSectionMetric("RV OnBindView"),
    ),
    // ...
)

자바

benchmarkRule.measureRepeated(
    /* packageName */ TARGET_PACKAGE,
    /* metrics */ Arrays.asList(
        new StartupTimingMetric(),
        new TraceSectionMetric("RV CreateView"),
        new TraceSectionMetric("RV OnBindView"),
    ),
    /* iterations */ 5,
    // ...
);

벤치마크 결과는 다음 이미지와 같이 Android 스튜디오에 출력됩니다. 측정항목을 여러 개 정의하면 모두 출력에 결합됩니다.

TraceSectionMetric 및 FrameTimingMetric의 결과

StartupTimingMetric

StartupTimingMetric은 다음 값을 사용하여 앱 시작 타이밍 측정항목을 캡처합니다.

  • timeToInitialDisplayMs: 시스템에 시작 인텐트가 수신된 후 대상 활동의 첫 프레임을 렌더링할 때까지의 시간입니다.
  • timeToFullDisplayMs: 시스템에 시작 인텐트가 수신된 후 애플리케이션이 reportFullyDrawn 메서드를 통해 완전히 도출하여 보고할 때까지의 시간입니다. reportFullyDrawn() 호출 후(또는 해당 호출 포함) 첫 번째 프레임의 렌더링이 완료되면 측정이 중지됩니다. 이 측정은 Android 10(API 수준 29) 이하에서는 사용하지 못할 수도 있습니다.

애플리케이션 시작 시간에 기여하는 요소에 관한 자세한 내용은 앱 시작 시간 페이지를 참고하세요.

StartupTimingMetric 결과

FrameTimingMetric

FrameTimingMetric은 벤치마크에서 생성된 프레임의 타이밍 정보(예: 스크롤 또는 애니메이션)를 캡처하고 다음 값을 출력합니다.

  • frameOverrunMs: 주어진 프레임이 기한을 초과한 시간입니다. 양수는 드롭된 프레임과 눈에 보이는 버벅거림/끊김 현상을 나타내고, 음수는 프레임이 기한보다 얼마나 빠른지 나타냅니다. Android 12(API 수준 31) 이상에서만 사용할 수 있습니다.
  • frameDurationCpuMs: CPU의 UI 스레드 및 RenderThread에서 프레임이 생성되는 데 걸리는 시간입니다.

이러한 측정값은 50번째, 90번째, 95번째, 99번째 백분위수로 분포되어 수집됩니다.

느린 프레임을 식별하고 개선하는 방법에 관한 자세한 내용은 느린 렌더링을 참고하세요.

FrameTimingMetric 결과

TraceSectionMetric(실험용)

TraceSectionMetric은 제공된 sectionName과 일치하는 트레이스 섹션에서 소요된 시간을 캡처하고 최소, 중앙값, 최대 시간을 밀리초 단위로 출력합니다. 트레이스 섹션은 trace(sectionName){} 함수 호출로 정의되거나 Trace.beginSection(sectionName)Trace.endSection()(또는 비동기 변형) 사이의 코드로 정의됩니다. 이 섹션은 측정 중에 캡처된 트레이스 섹션의 첫 번째 인스턴스를 항상 선택합니다.

추적에 관한 자세한 내용은 시스템 추적 개요맞춤 이벤트 정의를 참고하세요.

TraceSectionMetric 결과

PowerMetric(실험용)

PowerMetric는 제공된 categories의 테스트 기간 동안 전력 또는 에너지의 변화를 캡처합니다. 선택된 각 카테고리는 측정 가능한 하위 구성요소로 분류되는 반면 선택되지 않은 카테고리는 '선택 해제됨' 측정항목에 추가됩니다. 측정항목은 앱별 소비량이 아닌 시스템 전체 소비를 측정하며 현재 Pixel 6 및 Pixel 6 Pro 기기로 제한됩니다.

  • power<category>Uw - 이 카테고리에서 테스트 기간 동안 소모된 전력량입니다.
  • energy<category>Uws - 이 카테고리에서 테스트 기간 동안 시간 단위당 전송된 에너지의 양입니다.

카테고리에는 CPU, DISPLAY, GPU, GPS, MEMORY, MACHINE_LEARNING, NETWORK, UNCATEGORIZED가 있습니다.

CPU와 같은 일부 카테고리에서는 다른 프로세스에서 실행한 작업과 자체 앱에서 실행한 작업을 구분하기 어려울 수 있습니다. 불필요한 앱과 계정을 삭제하거나 제한하여 간섭을 최소화하세요.

PowerMetric 결과