안드로이드 앱을 만들다보면 이미지url을 사용하는 경우가 많다.
이미지url을 사용하는 방법도 Coil, Glide 등 굉장히 다양하다.
그렇다면 무엇을 사용하는 게 좋을까? 라는 의문이 자연스럽게 생긴다.
그래서 Coil과 Glide를 차이를 찾아보던 중 롯데ON 기술블로그에서 좋은 글을 발견했다.
그러나 위 글이 작성된 시점은 2022년이다.
현재 Coil이 보다 안정화되고 Compose가 보다 활성화된 현재 시점에서 주로 쓰는 AsyncImage()
로 Compose 환경에서의 차이를 한번 확인해보고 싶어졌다.
Coil과 Glide를 사용해서 각각 이미지를 불러오고 이를 Android Studio Profiler로 확인해준다.
두 경우의 상황에서 각각 Profiler를 통해 검사해준다.
시점은 앱 실행 후 15초 지점으로 몇번의 테스트 결과 이 상황에서 안정값과 이전 값의 비교를 확인하기 용이했다.
@Composable
fun LoadImage(imageUrl: String) {
AsyncImage(
model = imageUrl,
contentDescription = "Coil Image"
)
}
@OptIn(ExperimentalGlideComposeApi::class)
@Composable
fun LoadImage(imageUrl: String) {
GlideImage(
model = imageUrl,
contentDescription = "Glide Image"
)
}
Coil은 비동기로 실행되는 만큼 실제 환경에서 이미지가 순차적으로 로딩되는 것을 확인할 수 있었다.
반면에 Glide는 모든 이미지가 한번에 로딩되는 것을 확인할 수 있었다.
캐시값이 없는 처음 실행하는 상황에서 Coil은 133.5MB, Glide는 141MB로 Coil이 메모리 사용량이 더 적었다.
캐시값이 저장된 후에는 Coil은 129.9MB, Glide는 119.8MB로 Glide가 메모리 사용량이 더 적었다.
두 상황에서 Coil은 상대적으로 메모리 사용량에 대한 편차가 작았다.
Coil의 메모리 사용량 차 : 3.6MB
Glide의 메모리 사용량 차 : 21.2MB
✔️ Glide
✔️ Coil
물론 Glide는 View기반이고 Coil이 보다 Compose 친화적으로 최근에는 Coil을 추천하는 추세이다.
그렇지만 상황에 따라 필요한 라이브러리를 적절히 사용하는 것이 좋아보인다.