벤치마킹
| 최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
|---|---|---|---|---|
| 2026년 9월 9일 | 1.5.0 | - | - | - |
종속 항목 선언
Benchmark의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.
Macrobenchmark
프로젝트에서 Macrobenchmark를 사용하려면 Macrobenchmark 모듈의 build.gradle 파일에 다음 종속 항목을 추가합니다.
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.5.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.5.0") }
Microbenchmark
프로젝트에서 Microbenchmark를 사용하려면 마이크로벤치마크 모듈의 build.gradle 파일에 다음 종속 항목을 추가합니다.
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.5.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.5.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Microbenchmark 라이브러리는 microbenchmark 모듈에 사용할 Gradle 플러그인도 제공합니다.
이 플러그인은 모듈의 빌드 구성 기본값을 설정하고, 벤치마크 출력 사본을 호스트로 설정하며, ./gradlew lockClocks 작업을 제공합니다.
플러그인을 사용하려면 최상위 build.gradle 파일의 `plugins` 블록에 다음 행을 포함하세요.
Groovy
plugins { id 'androidx.benchmark' version '1.5.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.5.0" apply false }
그런 다음 플러그인을 벤치마크 모듈의 build.gradle 파일에 적용합니다.
Groovy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.5
버전 1.5.0
2026년 9월 9일
androidx.benchmark:benchmark-*:1.5.0이 출시되었습니다. 버전 1.5.0에는 이러한 커밋이 포함되어 있습니다.
버전 1.5.0-rc02
2026년 8월 26일
androidx.benchmark:benchmark-*:1.5.0-rc02이 출시되었습니다. 버전 1.5.0-rc02에는 이러한 커밋이 포함되어 있습니다.
버전 1.5.0-rc01
2026년 8월 12일
androidx.benchmark:benchmark-*:1.5.0-rc01이 출시되었습니다. 버전 1.5.0-rc01에 포함된 커밋을 확인하세요.
버전 1.5.0-beta01
2026년 7월 29일
androidx.benchmark:benchmark-*:1.5.0-beta01이 출시되었습니다. 버전 1.5.0-beta01에는 이 커밋이 포함되어 있습니다.
API 변경사항
- 이제
PerfettoCapture및PerfettoTraceRule가 프로세스 내 트레이스를 캡처하고 타겟 패키지에 병합할 수 있습니다. (I9a00b, b/497959820)
버전 1.5.0-alpha07
2026년 7월 1일
androidx.benchmark:benchmark-*:1.5.0-alpha07이 출시되었습니다. 버전 1.5.0-alpha07에는 이러한 커밋이 포함되어 있습니다.
API 변경사항
- 기기에서 Perfetto 트레이스 캡처 간소화 (I48810)
- 실험용
TraceProcessor.runServer확장 프로그램 API를androidx.benchmark:benchmark-macro에서androidx.benchmark:benchmark-common및androidx.benchmark패키지로 이동 이렇게 하면 향후 마이크로벤치마크에서 사용할 수 있습니다. (Ie25bb, b/393640753)
버그 수정
- Perfetto v56.0을 사용하도록 traceprocessor 구현 (번들 해제된 Perfetto 트레이스 캡처 포함) 업데이트 (I8fb9d)
- 기본적으로
androidx.benchmark.requireAot및androidx.benchmark.requireAot를 true로 설정합니다. 이러한 더 안전한 기본값은 마이크로벤치마크를 실행하기 전에 컴파일이 실행되고(AGP 8.4 이상을 사용할 때 벤치마크 Gradle 플러그인으로 기본적으로 사용 설정됨) ANR을 일으킬 수 있는 기본 스레드에서measureRepeated가 사용되지 않도록 합니다. (I1bc3c, b/379115078) - perfetto 종료 시간 제한이 5초에서 30초로 증가했습니다 (벤치마크에서 캡처된 Perfetto 세션만 해당). 문제가 발생할 때 더 명확한 오류 로깅이 추가되었습니다. (If188f, b/435589290)
버전 1.5.0-alpha06
2026년 5월 6일
androidx.benchmark:benchmark-*:1.5.0-alpha06이 출시되었습니다. 버전 1.5.0-alpha06에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 벤치마크 출력 디렉터리에서 추가 테스트 출력 디렉터리로 파일을 이동할 때 멀티 사용자 환경을 적절하게 처리합니다. (I90da5, b/489358149)
버전 1.5.0-alpha05
2026년 3월 25일
androidx.benchmark:benchmark-*:1.5.0-alpha05이 출시되었습니다. 버전 1.5.0-alpha05에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 최상위 패키지를 고려하도록
ArtMetric가 업데이트되었습니다. 이는 AGP/R8 9.1 이상 또는-repackageclasses전역 옵션을 사용할 때 특히 중요합니다. 이전에는ArtMetric가artClassLoad...측정에서 이러한 클래스 로드를 감지하지 못했습니다. (If8a35, b/487402058)
새 기능
- 루팅된 기기에서 CPU 클럭이 잠겨 있는지 확인하는 기능을 사용 설정할 수 있는 새로운 계측 인수 androidx.benchmark.requireLockedClocks가 추가되었습니다. (Id82e8, b/468039042)
버전 1.5.0-alpha04
2026년 3월 11일
androidx.benchmark:benchmark-*:1.5.0-alpha04이 출시되었습니다. 버전 1.5.0-alpha04에는 이러한 커밋이 포함되어 있습니다.
API 변경사항
JvmOverloads을PowerMetric.Energy및PowerMetric.Power에 추가했습니다 (Iac0d0, b/481371562).
버그 수정
- 최상위 패키지를 고려하도록
ArtMetric가 업데이트되었습니다. 이는 AGP/R8 9.1 이상 또는-repackageclasses전역 옵션을 사용할 때 특히 중요합니다. 이전에는ArtMetric가artClassLoad...측정에서 이러한 클래스 로드를 감지하지 못했습니다. (I207ca, b/487402058)
버전 1.5.0-alpha03
2026년 2월 11일
androidx.benchmark:benchmark-*:1.5.0-alpha03이 출시되었습니다. 버전 1.5.0-alpha03에는 이러한 커밋이 포함되어 있습니다.
- UiAutomator 2.4 베타에 종속되도록 업데이트했습니다.
버전 1.5.0-alpha02
2026년 1월 28일
androidx.benchmark:benchmark-*:1.5.0-alpha02이 출시되었습니다. 버전 1.5.0-alpha02에는 이러한 커밋이 포함되어 있습니다.
버그 수정
Kotlin 멀티플랫폼 모듈의 기준 프로필 생성 부분 지원 추가 일반적으로 프로필의 종속 항목은 종속 항목 블록에서
baselineProfileGradle 구성을 사용하여 정의할 수 있지만 현재 KMP 모듈에서는 작동하지 않습니다.kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // THIS DOES NOT WORK // baselineProfile(":yourProducerProject") } } }대신
baselineProfile**확장 프로그램을 사용하여 종속 항목을 정의해야 합니다. (Ie19c4)plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.kotlin.multiplatform.library") id("androidx.baselineprofile.consumer") } kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // ... } } } // Define dependencies // This works ! baselineProfile { variants { androidMain { from(project(":yourProducerProject")) } } }
버전 1.5.0-alpha01
2025년 12월 17일
androidx.benchmark:benchmark-*:1.5.0-alpha01이 출시되었습니다. 버전 1.5.0-alpha01에는 이러한 커밋이 포함되어 있습니다.
- Macrobenchmark 1.5는
UiAutomator2.4를 사용하여 측정된 애플리케이션과의 상호작용을 단순화합니다. 이제 MacrobenchmarkScope 객체가 UiAutomatorTestScope를 확장하므로onElement { ... }.click()과 같은 최신UiAutomatorAPI를 사용할 수 있습니다. UiAutomator2.4에 대한 자세한 내용은 문서를 참고하세요.
새로운 기능
- 기준 프로필 Gradle 플러그인에서 AGP 9.0의
newDsl=false가 더 이상 필요하지 않음 (Iaaac7, b/443311090) - 벤치마크에서 캡처한 시스템/Perfetto 트레이드에 코어 크기 (예: little/big)를 포함하도록 트레이스 구성을 확장합니다. (I8e397, b/457469959)
API 변경사항
- (UiAutomator에서) 새 창을 기다리도록
startActivity대기 변경 (I35da6, b/440021797) - androidx.benchmark에서
BlackHoleAPI 안정화 (I2b67e, b/451749438) PerfettoTraceRule의 편의 생성자를 위해@JvmOverloads추가 (I1510a, b/443763207)
버전 1.4
버전 1.4.1
2025년 9월 10일
androidx.benchmark:benchmark-*:1.4.1이 출시되었습니다. 버전 1.4.1에는 이러한 커밋이 포함되어 있습니다.
버그 수정
perfettoSdkTracing=true(예: 마이크로벤치마크에서 Compose 추적 시)가 이미 실행 중이고 StartupMode가 지정되지 않은 경우 타겟 프로세스를 종료하는 문제를 수정했습니다. (Ib2c1f)
버전 1.4.0
2025년 7월 30일
androidx.benchmark:benchmark-*:1.4.0이 출시되었습니다. 버전 1.4.0에는 이러한 커밋이 포함되어 있습니다.
1.3.0 이후 중요 변경사항
Microbenchmark
- Gradle 프로젝트 격리를 준수하기 위해 최상위 수준이 아닌 벤치마크 프로젝트에 Gradle 작업
lockClocks및unlockClocks를 이동했습니다. - 코루틴을 기반으로 빌드되고 더 나은
yield()동작을 지원하도록BenchmarkRule리팩터링 이렇게 하면 벤치마크 실행 중, 특히 긴 CI 실행 중에 ANR 위험이 크게 줄어듭니다. 참고: UI 벤치마크는measureRepeatedOnMainThread로 실행해야 합니다.
Macrobenchmark
- API 34 이상에서
CompilationMode.None()에 관한 해결 방법을 추가했습니다. ART의 지금 확인이 첫 번째 실행 후 앱을 부분적으로 컴파일하기 때문에 성능이 일관되지 않습니다. - 실험적 기능 - 시작 통계는
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))를 전달하여 시작 Macrobenchmark의 특정 일반적인 문제를 강조 표시할 수 있습니다. - JIT 컴파일과 최적화되지 않은 클래스 로딩을 감지하는 데 사용할 수 있는 ArtMetric이 추가되었습니다. 둘 다 기준 프로필 최적화의 유효성을 검사하는 데 유용합니다.
기준 프로필
- 이제
BaselineProfileRule에서 다중 프로세스 앱의 프로필을 수집합니다.
기타 변경사항
- TraceProcessor가 자체 라이브러리 (
androidx.benchmark:benchmark-traceprocessor)로 추출되어 다른 경우에Macrobenchmark측정항목 외부에서 사용할 수 있습니다. 자체 ServerLifecycleManager를 정의하여 데스크톱 JVM에서 실행할 수도 있습니다.
버전 1.4.0-rc01
2025년 6월 18일
androidx.benchmark:benchmark-*:1.4.0-rc01이 출시되었습니다. 버전 1.4.0-rc01에는 이 커밋이 포함되어 있습니다.
버그 수정
- 첫 번째 반복 후 최악의 성능을 측정하지 않는
CompilationMode.None()의 원인이 되는 런타임 이미지의 해결 방법 추가 이 해결 방법에서는 각 macrobenchmark 모음 (I4a4f1) 시작 시 런타임 이미지를 의도적으로 손상시키기 위해 5초의 지연이 필요합니다.
버전 1.4.0-beta02
2025년 6월 4일
androidx.benchmark:benchmark-*:1.4.0-beta02이 출시되었습니다. 버전 1.4.0-beta02에는 이 커밋이 포함되어 있습니다.
API 변경사항
- Java 개발자가
BaselineProfileRule.collectWithResults()를 더 쉽게 호출할 수 있도록BaselineProfileConfig.Builder를 추가했습니다. (I94905)
버전 1.4.0-beta01
2025년 5월 7일
androidx.benchmark:benchmark-*:1.4.0-beta01이 출시되었습니다. 버전 1.4.0-beta01에는 이 커밋이 포함되어 있습니다.
API 변경사항
PerfettoConfig를 허용하는PerfettoTraceRule생성자 변형을 추가했습니다 (Ie53ba).
버그 수정
- 올바른 플러그인과 더 명확한 구분 기호를 사용하도록
TraceProcessor시작 통계 링크 형식을 업데이트했습니다 (:는%3A보다 짧으며 둘 다 지원됨) (Ie18ef). - 루팅되고 시스템 앱을 종료하는 경우에도 항상 강제 종료를 사용하여 프로세스를 종료합니다.
Expected no stdout/stderr from killall ... No such process형식의 예외를 수정합니다. (Idca2c)
외부 기여
TraceProcessorHttpServer의 프록시 예외 핸들러 추가 (I480f5)
버전 1.4.0-alpha11
2025년 4월 9일
androidx.benchmark:benchmark-*:1.4.0-alpha11이 출시되었습니다. 버전 1.4.0-alpha11에는 이러한 커밋이 포함되어 있습니다.
API 변경사항
TraceProcessor의 인수 timeout을 변경했습니다. Java 호출자 사용성을 위해 timeoutMs 기간이 길어집니다. (I9fbb5)TraceProcessor생성자를 내부로 표시 호출자는TraceProcessor.startServer또는TraceProcessor.runServer를 사용해야 합니다. (Ia8c5b)
버그 수정
MacrobenchmarkScope.killProcess로 애플리케이션을 종료할 때 종료 명령어 결과를 검증하여 자동 실패 및 타임아웃 오류를 방지합니다. (I84555)
종속 항목 업데이트
- 이제 이 라이브러리는 Kotlin 2.0 언어 수준을 타겟팅하며 KGP 2.0.0 이상이 필요합니다. (Idb6b5)
버전 1.4.0-alpha10
2025년 3월 26일
androidx.benchmark:benchmark-*:1.4.0-alpha10이 출시되었습니다. 버전 1.4.0-alpha10에는 이러한 커밋이 포함되어 있습니다.
API 변경사항
TraceProcessor서버 로드 및 쿼리의 기본 제한 시간을 120초 (이전 60/30초)로 늘리고 하나의 제한 시간 매개변수로 구성할 수 있도록 했습니다. (Ifec87)
버그 수정
profileinstaller없이 앱의 프로필을 벤치마킹하거나 캡처할 때 발생하고BroadcastReciever가 포함된 몇 가지 문제가 수정되었습니다. 이는 루팅된 기기에서 실행되는 경우에만 영향을 미칩니다. (Ied308)
버전 1.4.0-alpha09
2025년 3월 12일
androidx.benchmark:benchmark-*:1.4.0-alpha09이 출시되었습니다. 버전 1.4.0-alpha09에는 이러한 커밋이 포함되어 있습니다.
API 변경사항
- 맞춤 수명 주기에서 더 쉽게 사용할 수 있도록 닫을 수 있는 핸들이 있는
TraceProcessor및 세션 API를 추가했습니다. 또한 코루틴과 Java API를 더 쉽게 사용할 수 있도록 하는 단계이기도 합니다.TraceProcessor.runServer {}확장 프로그램 함수는 향후 이동하고 실험적이지 않은 것으로 표시될 가능성이 있으므로 이제 실험적으로 표시됩니다. (I358b4)
버그 수정