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