💡
해당 내용은 성능측정 및 개선을 위한 macrobenchmark를 사용하는 방법이다
Jetpack Macrobenchmark
- 앱의 성능을 측정 및 벤치마킹 하기위한 라이브러리이다. Android Studio에서 직접 결과를 제공하고, 결과를 JSON 파일에 기록한다.
- 로컬 측정 및 CI의 성능 테스트에도 모두 적합하다
프로젝트에 benchmark추가
→ 최소 arctic fox 2020.3.1이 필요함

- 모듈 새로 만들기

- 모듈 템플릿에서 벤치마크로 생성
- 벤치마크 모듈 유형으로 macrobenchamark를 선택
- 벤치마킹의 최소 sdk는 android6(API 레벨 23)이상이 필요함
- 마법사는 아래와 같은 작업을 수행함
- 매크로벤치마크용 모듈을 생성함. com.android.test
- debuggable 을 false로, signingConfig 를 debug로 설정하는 benchmark buildType을 추가함
<profileable>
태그를 AndroidManifest에 추가합니다
- 기본 시작 벤치마크 스캐폴드를 만든다
앱 시작 측정
// Copyright 2022 Google LLC.
// SPDX-License-Identifier: Apache-2.0
@RunWith(AndroidJUnit4::class)
class StartupBenchmark {
@get:Rule
val benchmarkRule = MacrobenchmarkRule()
@Test
fun startup() = benchmarkRule.measureRepeated(
packageName = "com.google.samples.apps.sunflower",
metrics = listOf(StartupTimingMetric()),
iterations = 5,
startupMode = StartupMode.COLD,
){
pressHome()
startActivityAndWait()
}
}
- Macrobenchmark는 일반 계측 단위 테스트이므로 JUnit 구문(
@RunWith
,@Rule
,@Test
등)을 사용합니다. 벤치마크를 작성할 때 진입점은measureRepeated
의 함수 이며MacrobenchmarkRule
여기서 최소한 다음 매개변수를 지정해야 합니다.packageName
벤치마크는 별도의 프로세스에서 실행되기 때문에 측정할 앱을 지정해야 합니다.
metrics
캡처된 주요 정보 유형입니다.
iterations
루프가 반복되는 횟수.
measureBlock
(마지막 람다 매개변수) – Macrobenchmark는 이 블록 동안 정의된 메트릭을 추적하고 기록함. 여기에서 측정하려는 작업을 수행함.
CompilationMode
선택적으로 StartupMode
를 지정할 수도 있음.
CompilationMode
는 애플리케이션이 기계 코드로 사전 컴파일되는 방법을 정의하며 다음 옵션이 있음.
None()
– 앱을 사전 컴파일하지 않지만 앱 실행 중에 JIT가 계속 활성화됨
Partial()
– 기본 프로필 및/또는 준비 실행으로 앱을 사전 컴파일함
Full()
– 전체 앱을 미리 컴파일함. Android 6(API 23) 이하에서는 유일한 옵션
StartupMode
를 사용하면 벤치마크 시작 시 애플리케이션을 시작하는 방법을 정의할 수 있음.
사용 가능한 옵션은 COLD
, WARM
, HOT
.
StartupMode.COLD
앱이 수행해야 하는 가장 큰 작업량을 나타내는 것
- 구체적인 사용기를 작성해볼것
Uploaded by N2T