히어로 벤치마크는 앱 시작 또는 오픈소스 Pokedex 앱의 스크롤과 같은 상위 수준 앱 사용자 여정을 다루는 벤치마크 세트입니다.
- 시작 히어로 벤치마크: 앱을 여는 시점부터 콘텐츠가 표시되는 시점까지의 시간을 추적합니다.
- 스크롤 히어로 벤치마크: 이미지가 있는 지연 그리드의 스크롤 성능을 측정합니다.
테스트 설정
- 앱 선택: 오픈소스 Pokedex 앱을 사용하여 뷰 기반 버전과 Compose 기반 버전을 비교하는 테스트를 진행했습니다. 이 앱은 실제 시나리오를 나타내기 위해 선택되었으며 Compose팀에서 개발하지 않았습니다.
- 하드웨어 설정: CPU와 GPU가 잠긴 Android 12 (API 31)를 실행하는 Pixel 3a에서 벤치마크를 실행했습니다. 이 기기는 히어로 벤치마크의 표준 성능 기준선으로 사용됩니다.
- 빌드 설정: 벤치마크는 R8 이 사용 설정된 출시 모드에서 빌드된 앱을 사용합니다. 앱은 JIT (Just-In-Time) 컴파일로 인한 불안정성을 줄이기 위해 완전히 사전 컴파일됩니다.
- 결과 선택: 최악의 경우 분석을 위해 극단적인 이상점과 대표성이 없는 노이즈는 벤치마크 결과에서 제외되었습니다. 그런 다음 상한 실적 데이터의 중간값을 선택하여 기준선을 설정했습니다.
시작 히어로 벤치마크
시작을 측정하기 위해 PokedexStartupBenchmark를 사용했습니다. PokedexStartupBenchmark는 Pokedex 앱이 사용자에게 표시되는 데 걸리는 시간을 측정합니다.
앱은 세 가지 상태 중 하나에서 시작합니다. 콜드 스타트, 웜 스타트, 핫 스타트 각 상태는 앱이 사용자에게 표시되는 데 걸리는 시간에 영향을 미칩니다. 콜드 스타트에서는 앱이 처음부터 시작됩니다. 이 벤치마크에서는 콜드 스타트 상태에서 앱 시작 성능을 측정합니다. 항상 콜드 스타트를 가정하여 앱을 최적화하는 것이 좋습니다. 이렇게 하면 웜 스타트와 핫 스타트의 성능도 개선될 수 있습니다.
앱 시작 시간을 측정하는 데 사용하는 측정항목은 처음 표시하는 데 걸린 시간과 완전히 표시하는 데 걸린 시간입니다.
처음 표시하는 데 걸린 시간
처음 표시하는 데 걸린 시간 (TTID)은 콜드 스타트 중 프로세스 초기화, 콜드 또는 웜 스타트 중 활동 생성, 첫 번째 프레임 표시 등 앱이 첫 프레임을 생성하는 데 걸리는 시간을 측정합니다.
PokedexStartupBenchmark에서 Compose 1.11은 콜드 스타트에서 TTID의 뷰보다 2.5% 느립니다.
완전히 표시하는 데 걸린 시간
완전히 표시하는 데 걸린 시간 (TTFD)은 앱이 상호작용할 수 있게 될 때까지 걸리는 시간을 측정합니다. 즉, 모든 데이터가 로드되고 그려졌습니다. 완전히 표시하는 데 걸린 시간에 관한 자세한 내용은 앱 시작 시간을 참고하세요.
PokedexStartupBenchmark에서 Compose 1.11은 콜드 스타트에서 TTFD의 뷰보다 13.0% 느립니다.
스크롤 히어로 벤치마크
스크롤 성능을 측정하기 위해 PokedexScrollBenchmark를 사용했습니다. 이미지가 있는 지연 그리드의 Pokedex 앱 화면의 스크롤 성능을 측정합니다. 이 벤치마크에서는 전체 화면이 여러 번 스크롤되고 플링되며 새 항목이 로드됩니다. 스크롤 성능은 버벅거림 비율로 측정됩니다.
버벅거림 비율
Android 기기는 초당 최대 60 또는 120프레임 (fps)으로 렌더링합니다. 즉, 시스템에는 프레임을 생성하기 위한 엄격한 기한 (예: 60fps의 경우 16.6ms)이 있습니다. 앱이 작업을 완료하는 데 너무 오래 걸리면 버벅거림이라고 하는 눈에 띄는 끊김이 발생할 수 있습니다.
PokedexScrollBenchmark에서 Compose와 뷰는 Compose 1.9.0 이후로 0.21% 의 버벅거림으로 동일한 성능을 달성합니다. 절대적인 측면에서 485프레임 중 1프레임이 버벅거렸습니다.
이러한 벤치마크는 Compose 1.9 이상이 스크롤하는 동안 버벅거림에 관한 뷰 성능과 일치함을 보여줍니다.
히어로 벤치마크 실행
성능 결과를 검증하고 벤치마크를 로컬에서 실행하려면 다음 단계를 따르세요.
- AndroidX 가이드에 따라 소스 코드를 체크아웃합니다.
- 히어로 벤치마크 소스 코드의 안내를 따릅니다.
앱을 최적화하는 특정 기기와 같이 지원되는 모든 기기에서 이러한 벤치마크를 실행할 수 있습니다. 하지만 공식 결과를 검증하려면 동일한 하드웨어 설정을 사용하세요.