Android/다양한 기능들(Library)

Coil이 항상 옳을까? Coil vs Glide

chattymin 2023. 12. 14. 15:25
728x90
반응형

왜 이 주제를 선택했을까?

얼마전 당근에 다니고 계시는 선배님과 잠깐 전화로 이야기를 나눌 일이 있었다.

내 이력서를 보시고 다양한 코멘트 들을 해주셨는데 그 중 “내가 사용하는 기술에 대한 명확한 근거가 있어야 한다”라는 내용이 있었다.

그 이야기를 듣고 생각해보니 난 그저 관습적으로 늘 쓰던 기술을 사용한 것 뿐이지 왜 그 기술을 사용 했는지에 대한 명확한 근거가 없었다.

그래서 내가 사용하는 기술과, 그 대체재를 찾아보고 명확한 근거를 수립하여 이후 프로젝트에서 사용할 기술을 정하고자 한다.

 

이번 글에서 비교해볼 주제는이미지 로딩 라이브러리이다.

 

 

Coil이란?

Coil은 Kotlin Coroutines로 만들어진 Android 백엔드 이미지 로딩 라이브러리로, Cououtine Image Loader의 약자이다.

 

공식문서의 장점을 보자.

  • 빠르다: Coil은 메모리와 디스크의 캐싱, 메모리의 이미지 다운 샘플링, Bitmap 재사용, 일시정지/취소의 자동화 등등 수 많은 최적화 작업을 수행합니다.
  • 가볍다: Coil은 최대 2000개의 method들을 APK에 추가합니다(이미 OkHttp와 Coroutines을 사용중인 앱에 한하여), 이는 Picasso 비슷한 수준이며 Glide와 Fresco보다는 적습니다.
  • 사용하기 쉽다: Coil API는 심플함과 최소한의 boilerplate를 위하여 Kotlin의 기능을 활용합니다.
  • 현대적이다: Coil Kotlin 우선이며 Coroutines, OkHttp, Okio, AndroidX Lifecycles등의 최신 라이브러리를 사용합니다.

 

초반의 Coil 라이브러리는 불안정하다는 평이 많았지만, 현재는 많은 업데이트를 거치며 충분히 안정화 되었다.

또한 라이브러리가 거의 100% 코틀린으로 이루어졌다는 점과 AndroidX, OkHttp 등 현업에서 많이 쓰이는 라이브러리들을 지원하고 있다는 점이 큰 장점이다. 안드로이드 코드랩에서도 Coil 라이브러리의 활용을 적어둔 것 처럼 현재 충분히 좋은 라이브러리라고 생각한다.

 

 

 

 

 

Glide란?

구글이 공개한 이미지 로딩 라이브러리이다. 원래는 다른 팀에서 만들었는데 구글에서 인수했다고 하더라.

 

공식문서

Glide는 부드러운 스크롤에 초점을 맞춘 빠르고 효율적인 Android용 이미지 로딩 라이브러리입니다. Glide의 주요 초점은 모든 종류의 이미지 목록을 가능한 한 부드럽고 빠르게 스크롤하는 데 있지만 Glide는 원격 이미지를 가져오고 크기를 조정하고 표시해야 하는 거의 모든 경우에도 효과적입니다.

 

그리고 Glide는 사용자가 한 줄로 대부분의 요청을 할 수 있도록 하는 간단하고 유창한 API를 사용할 수 있다고 하네요

 

 

테스트

IDE : Android Studio Flamingo 2022.2.1 Patch 2

Device :  Pixel 4 XL

Coil : 2.4.0

Glide Version : 4.16.0

그 외 사양 전부 동일

 

아래와 같은 화면을 띄우는데 걸리는 메모리를 측정해봤다.

두 방식 모두 image url을 활용해서 화면에 띄웠다.

Lorem Picsum의 api로 받아온 사진

 

Coil

캐시가 없을 때 / 캐시가 있을 때

Glide

캐시가 없을 때 / 캐시가 있을 때

 

전반적으로 Glide의 메모리 사용양이 적은 것을 볼 수 있다.

또한 실제 가동하면서도 육안으로 유의미할 정도의 속도 차이를 보았다.

 

 

결론

적어도 내가 테스트한 환경에서는 Glide가 Coil보다 뛰어난 성능을 보여주었다. 

 

하지만, 많은 것을 활용한 것이 아닌 단순 이미지를 띄우는 환경이기 때문에 실제 환경과는 차이가 있을 수 있다.

또한 Coil은 속도 뿐만 아니라 다른 장점들이 있기 때문에 상황에 맞게 사용하면 될 것 같다. 

728x90
반응형