일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 감성카페
- 개발자
- 대구핫플
- androidstudio
- 범물동
- 코딩
- 동성로맛집
- 안드로이드
- 대구맛집
- 동성로카페
- 의무경찰
- 코딩공부
- 어플개발
- 애드센스
- 지산동카페
- 대구인스타핫플
- 안드로이드개발
- 애드몹
- 수성구카페
- 수성구맛집
- 파이썬
- 안드로이드앱개발
- 범물동카페
- 인스타핫플
- 안드로이드스튜디오
- 앱개발
- Android
- 대구카페
- 안드로이드앱
- 동성로핫플
Archives
- Today
- Total
Glacier's Daily Log
Compose의 Strong Skipping Mode에 대해 본문
반응형
Strong Skipping Mode는 Compose Compiler 1.5.4 version에 실험적으로 추가된 기능이다.
(Note: Strong Skipping is enabled by default in Kotlin 2.0.20.)
Strong Skipping Mode
기본적으로 Compose 컴파일러는 Composable Function의 arguments들이 안정적이라면 skippable 하다고 간주.
이와 관련하여 Strong Skipping Mode가 skippable 한 파라미터를 더 잘 찾을 수 있게 함.
1. 기존 Skipping Mode
기존에는 다음 조건을 만족해야 리컴포지션이 Skip됨.:
- 데이터가 Stable이어야 함.
- 데이터가 변경되지 않았음을 Compose가 알 수 있어야 함.
따라서 Stable하지 않은 데이터(예: List)는 ImmutableList로 변환해야 더 좋은 최적화가 가능했음.
2. Strong Skipping Mode의 개선
Strong Skipping Mode는 Compose 1.5.0 이상에서 도입된 모드로, 다음과 같은 특징이 있습니다:
- Unstable 객체에서도 리컴포지션 최적화가 가능:
- Stable 판단 조건 개선
- unstable 파라미터 : 인스턴스 동등성 (===)
- stable 파라미터 : 객체 동등 (Object.equals())
- 객체의 안정성 여부와 관계없이, equals 메서드로 변경 여부를 확인하여 리컴포지션을 Skip할 수 있음.
- 기존처럼 반드시 ImmutableList로 변환하지 않아도 최적화가 가능.
- Stable 판단 조건 개선
- 메모리 비용 감소:
- 불필요한 복사를 줄이고, 기존 컬렉션 객체를 그대로 사용할 수 있으므로 더 효율적.
3. List -> ImmutableList 변환이 불필요한 이유
Strong Skipping Mode가 활성화되면:
- 기존 List를 ImmutableList로 변환하지 않아도 Compose는 객체의 변경 여부를 안정적으로 확인함.
- 따라서 굳이 List를 ImmutableList로 변환하는 최적화 과정을 거치지 않아도 된다고 이해할 수 있.
Compose는 List의 equals 메서드를 사용하여, 기존 데이터와 새로운 데이터가 동일한지 체크하고, 변경이 없으면 리컴포지션을 건너뛸 수 있음.
참고
- https://developer.android.com/develop/ui/compose/performance/stability/strongskipping
- https://thinking-face.tistory.com/369
- https://naemamdaelo.tistory.com/entry/Jetpack-Compose-Strong-Skipping-Mode
- https://medium.com/androiddevelopers/jetpack-compose-strong-skipping-mode-explained-cbdb2aa4b900
- https://velog.io/@skydoves/compose-stability
반응형
'Coding > Android' 카테고리의 다른 글
[React-Native] 리액트 네이티브 버전 업그레이드시 참고할 사이트 (1) | 2025.01.07 |
---|---|
Compose Strong Skipping Mode의 람다 메모라이제이션 기능 (0) | 2024.12.13 |
Compose의 리컴포지션 판단 메커니즘과 Stability (0) | 2024.12.13 |
[앱 개발 전문가] 기기 연동 안드로이드 앱을 개발해 드립니다. (BLE, MQTT, TCP, RTSP, PTZ, 클래식 블루투스 등) (4) | 2024.12.01 |
헷갈리는 Sealed, Open, Abstract Class를 정리해보자 (0) | 2024.09.26 |
Comments