iOS 이미지 다운셈플링 실험

OQ·2022년 3월 20일
0

실험실

목록 보기
5/6
post-thumbnail

해당 실험은 WWDC2018 iOS Memory Deep Dive 내용이 참고 되었습니다.

이미지가 많이 들어가는 화면이 있습니다.
이 화면의 이미지들을 서버에서부터 썸네일 이미지를 따로 주면 최고겠지만 현실은 그렇지 않습니다.
그렇기에 네트워크 트레픽은 감수한다해도
이미지가 많이 들어가는 리스트에서 빠르게 스크롤했을 때 버벅임이 간혹 보이곤 합니다.
캐시된 이미지를 써도 버벅임이 보입니다.
그래서 이미지 다운셈플링을 해보기로 했습니다!

이미지 다운셈플링이란 간단히 말해서 픽셀 수를 줄여서 로드하는 겁니다.
예를들면, 100px * 100px 란 이미지를 10px * 10px 줄여서 로드하는 것

500kb의 압축포맷(jpg)인 이미지가 메모리상에 올라가면 10mb정도 차지한다고 합니다.
(정확히는 픽셀의 수에따라 다름)
아래 이미지는 WWDC2018 iOS Memory Deep Dive에서 캡쳐한 내용입니다.

저런 이미지가 한 화면에 20개 정도 보여진다면 200Mb? 생각보다 얼마 안되는 것 같지만 갑자기 메모리 사용량이 이 200Mb가 치솟은다면 앱은 잠깐의 버벅임을 보입니다. (직접 경험한 내용...)
상대적으로 적은 아이폰의 메모리에서 이미지 다운셈플링은 더더욱 중요합니다.

이미지가 많이 들어가는 리스트에서 다운셈플링을 통해 메모리 관리가 얼만큼 되는지 실험해보겠습니다.

다음 이미지의 그래프는 이미지 리스트를 엄청나게 스크롤해서 나온 메모리 그래프입니다.


마치 코인가격을 보는듯 합니다.
메모리 안정화가 바로 되긴했지만 순식간에 치솟은 메모리 사용율로인해 약간의 버벅임도 일어났습니다.
빨간 선으로 밑줄 그은 메모리 최고점을 보시면 265Mb 정도 나온걸 확인할 수 있습니다.

다음 이미지는 다운셈플링(300x300px)을 한 메모리 그래프입니다.


동일하게 테스트했지만 메모리가 급격하게 치솟지 않은걸 확인할 수 있습니다.
메모리 최고점은 75Mb입니다.
이미지 다운셈플링 하기 전 메모리 최고점이 265Mb인 것이랑 비교하면 상당히 많이 줄었습니다.
무엇보다 메모리 점유율이 안정되어 앱 버벅임이 일어나지 않았습니다.

이상 이미지 다운셈플링을 통해서 앱을 좀 더 쾌적하게 이용해보는 실험을 마치겠습니다~

profile
덕업일치 iOS 개발자

0개의 댓글