Glacier's Daily Log

Compose의 Strong Skipping Mode에 대해 본문

Coding/Android

Compose의 Strong Skipping Mode에 대해

h__glacier_ 2024. 12. 13. 15:10
반응형

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로 변환하지 않아도 최적화가 가능.
  • 메모리 비용 감소:
    • 불필요한 복사를 줄이고, 기존 컬렉션 객체를 그대로 사용할 수 있으므로 더 효율적.

3. List -> ImmutableList 변환이 불필요한 이유

Strong Skipping Mode가 활성화되면:

  • 기존 List를 ImmutableList로 변환하지 않아도 Compose는 객체의 변경 여부를 안정적으로 확인함.
  • 따라서 굳이 List를 ImmutableList로 변환하는 최적화 과정을 거치지 않아도 된다고 이해할 수 있.

Compose는 List의 equals 메서드를 사용하여, 기존 데이터와 새로운 데이터가 동일한지 체크하고, 변경이 없으면 리컴포지션을 건너뛸 수 있음.

참고

반응형
Comments