Jetpack Compose는 처음부터 우수한 성능을 제공합니다. 권장사항을 사용하여 앱을 구성하여 일반적인 문제를 방지하고 Compose 애플리케이션의 성능을 최적화하세요.
Jetpack Compose 벤치마킹
Jetpack Compose 성능을 뷰와 비교하여 검증하기 위해 앱 콜드 시작, 이미지가 포함된 목록 또는 그리드 스크롤과 같은 중요한 실제 사용자 여정에 중점을 두는 히어로 벤치마크를 사용합니다. 오픈소스 Pokedex 앱을 사용하여 이러한 벤치마크를 실행하고 Views 및 Compose 구현을 비교합니다.
이러한 벤치마크는 Compose 1.9 이상이 스크롤하는 동안 Jank에 대한 뷰 성능과 일치함을 보여줍니다.
추가 측정항목과 Google의 방법론에 관해 자세히 알아보려면 히어로 벤치마크를 참고하세요.
주요 개념
다음은 Compose의 성능에 관한 몇 가지 주요 개념입니다.
- 단계: 컴포지션, 레이아웃, 그리기 단계를 이해하는 것은 Compose가 UI를 업데이트하는 방식을 최적화하는 데 중요합니다.
- 기준 프로필: 이러한 프로필은 필수 코드를 사전 컴파일하여 앱 출시를 더 빠르게 하고 상호작용을 더 원활하게 합니다.
- 안정성: 앱의 안정성을 높여 불필요한 리컴포지션을 더 효율적으로 건너뛰어 성능을 개선합니다.
적절한 앱 구성
앱의 성능이 좋지 않으면 구성 문제가 있을 수 있습니다. 먼저 다음 구성 옵션을 확인하는 것이 좋습니다.
- R8로 출시 모드에서 빌드: 출시 모드에서 앱을 실행해 보세요. 디버그 모드는 여러 문제를 발견하는 데 유용하지만 성능 비용이 발생하며 다른 문제를 발견하기가 어려워질 수 있습니다. R8 컴파일러로 최적화 및 축소를 사용 설정하여 성능이 우수하고 효율적인 출시 빌드를 보장해야 합니다.
- 기준 프로필 사용: 기준 프로필은 중요한 사용자 여정의 코드를 사전 컴파일하여 성능을 개선합니다. Compose에는 기본 프로필이 포함되어 있지만 앱 전용 프로필도 만드는 것이 좋습니다. 일반 Android 성능 문서에서 기준 프로필에 대해 자세히 알아보기
도구
Compose 앱의 성능을 측정하고 분석하는 데 사용할 수 있는 도구 모음을 숙지합니다.
권장사항
Compose로 앱을 개발할 때는 다음 권장사항을 참고하세요.
- 비용이 많이 드는 계산 방지:
remember를 사용하여 비용이 많이 드는 계산 결과를 캐시합니다. - 지연 레이아웃 지원:
key매개변수를 사용하여 지연 레이아웃에 안정적인 키를 제공하여 불필요한 리컴포지션을 최소화합니다. - 불필요한 리컴포지션 제한: 상태를 빠르게 변경할 때 리컴포지션을 제한하려면
derivedStateOf를 사용합니다. - 상태 읽기 연기: 람다 함수로 래핑하여 최대한 오랫동안 상태 읽기를 연기합니다.
- 상태 변경에 람다 수정자 사용: 자주 변경되는 상태 변수에는
Modifier.offset { ... }와 같은 람다 기반 수정자를 사용합니다. - 역방향 쓰기 방지: 컴포저블 함수에서 이미 읽은 상태에 쓰지 마세요.
자세한 내용은 권장사항 가이드를 참고하세요.
조회수
Compose 대신 뷰를 사용하는 경우 전용 레이아웃 성능 개선 가이드를 참고하세요.
추가 리소스
- 앱 성능 가이드: Android에서 성능을 개선하기 위한 권장사항, 라이브러리, 도구를 알아보세요.
- 성능 검사: 앱 성능을 검사합니다.
- 벤치마킹: 앱 성능을 벤치마킹합니다.
- 앱 시작: 앱 시작을 최적화합니다.
- 기준 프로필: 기준 프로필을 이해합니다.