들어가며

안드로이드 앱을 만들다보면 이미지url을 사용하는 경우가 많다.
이미지url을 사용하는 방법도 Coil, Glide 등 굉장히 다양하다.
그렇다면 무엇을 사용하는 게 좋을까? 라는 의문이 자연스럽게 생긴다.
그래서 Coil과 Glide를 차이를 찾아보던 중 롯데ON 기술블로그에서 좋은 글을 발견했다.

그러나 위 글이 작성된 시점은 2022년이다.
현재 Coil이 보다 안정화되고 Compose가 보다 활성화된 현재 시점에서 주로 쓰는 AsyncImage()로 Compose 환경에서의 차이를 한번 확인해보고 싶어졌다.

테스트 환경

  • 기기 : 삼성 갤럭시 S24
  • Coil 버전 : 2.2.2
  • Glide 버전(Compose) : 1.0.0-alpha.1
  • 이미지는 원본이미지 사용

테스트 절차

Coil과 Glide를 사용해서 각각 이미지를 불러오고 이를 Android Studio Profiler로 확인해준다.

  • 처음 앱을 실행했을 경우(앱 제거 후 재설치)
  • 캐시가 저장된 후 실행했을 경우

두 경우의 상황에서 각각 Profiler를 통해 검사해준다.

시점은 앱 실행 후 15초 지점으로 몇번의 테스트 결과 이 상황에서 안정값과 이전 값의 비교를 확인하기 용이했다.

테스트 코드

  1. Coil
@Composable
fun LoadImage(imageUrl: String) {
    AsyncImage(
        model = imageUrl,
        contentDescription = "Coil Image"
    )
}
  1. Glide
@OptIn(ExperimentalGlideComposeApi::class)
@Composable
fun LoadImage(imageUrl: String) {
    GlideImage(
        model = imageUrl,
        contentDescription = "Glide Image"
    )
}

테스트 실행

Coil

처음 실행

캐시가 저장된 후

Glide

처음 실행

캐시가 저장된 후

분석

  1. Coil은 비동기로 실행되는 만큼 실제 환경에서 이미지가 순차적으로 로딩되는 것을 확인할 수 있었다.
    반면에 Glide는 모든 이미지가 한번에 로딩되는 것을 확인할 수 있었다.

  2. 캐시값이 없는 처음 실행하는 상황에서 Coil은 133.5MB, Glide는 141MB로 Coil이 메모리 사용량이 더 적었다.

  3. 캐시값이 저장된 후에는 Coil은 129.9MB, Glide는 119.8MB로 Glide가 메모리 사용량이 더 적었다.

  4. 두 상황에서 Coil은 상대적으로 메모리 사용량에 대한 편차가 작았다.
    Coil의 메모리 사용량 차 : 3.6MB
    Glide의 메모리 사용량 차 : 21.2MB

결론

✔️ Glide

  • 반복되는 이미지 사용이 많아 캐시 데이터 사용이 많을 경우

✔️ Coil

  • 다양한 이미지를 사용해서 캐시의 사용이 어려울 경우
  • 어느 상황이던간에 일정한 성능이 필요한 경우

물론 Glide는 View기반이고 Coil이 보다 Compose 친화적으로 최근에는 Coil을 추천하는 추세이다.
그렇지만 상황에 따라 필요한 라이브러리를 적절히 사용하는 것이 좋아보인다.

profile
안드로이드 외길

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN