일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- HIG
- layoutSubviews
- Nan
- HealthKit
- playground
- pagination
- ios
- retain cycle
- content-type
- Firebase
- SPM
- Tuist-Action
- Github-Action
- Tuist
- arc
- FlexLayout
- fetchSignInMethods
- Swift
- garbage collection
- UITest
- Xcode
- AppStore
- 회고
- Automatic Reference Count
- App Connect
- YGEnums.h
- rc
- human interface guidelines
- authentication
- alamofire
- Today
- Total
멋있게걷는방법
[Swift] 지금 바로 Pagination 을 적용해야 하는 이유 본문
프로젝트에 단순 데이터를 불러오는 게 아닌, page 단위로 불러오면 메모리 효율을 아낄 수 있는데요,
이게 바로 Pagination
입니다. 무한스크롤이라고도 하죠.
Pagination 은 메모리 효율을 아낄 수 있다고 했는데, 그 이유는 뭘까요?
들어가기 전에,
tableView의 delegate, datasource로 tableView를 구성했다면 대부분dequeueReusableCell를
이용해 재사용 셀을 구성했을 겁니다.
만약 Rx를 쓴다면?
.drive(postTableView.rx.items(cellIdentifier: PostCell.identifier,
cellType: PostCell.self)) { (row, data, cell) in
이런 식으로 쉽게 구현할 수 있었을 것입니다.
그럼 본론으로 들어가서,
Pagination을 사용하면 얻는 장점
(대부분 일정 범위까지의 데이터만 로드하기 때문에 얻는 장점입니다.)
1. 효율적인 데이터 로딩
기존엔 모든 데이터를 불러왔다면 Pagination 을 적용하면 현재 보이는, 또는 일정 범위까지의 데이터만
로드하기 때문에 로딩 시간을 크게 줄일 수 있습니다. 예를 들어 인터넷이 느리거나 규모가 큰 대량의 데이터를 다룰 때 유용합니다.
2. 메모리 관리
tableView를 띄운다면 내가 볼 수 없는 곳까지의 데이터를 굳이 불러오는 건 메모리 낭비겠죠? Pagination을 사용하면 필요한 페이지만 로드하여 메모리 사용을 최적화할 수 있습니다. 또한 필요하지 않은 데이터를 메모리에 유지하지 않아도 되므로 앱의 메모리 사용량을 줄일 수 있습니다.
3. 캐싱 & 재사용
pagination 은 페이지 단위로 데이터를 처리하기 때문에 각 페이지를 캐싱하고 재사용할 수 있습니다.
예를 들어 첫 번째 페이지를 로딩을 완료했는데 네트워크 연결이 끊어졌다면,
첫 번째 페이지의 데이터는 캐싱된 메모리를 통해 보일 수 있습니다.
아래는 제가 직접 프로젝트에 Pagination을 적용시키면서 확인한 메모리 사용량 비교입니다.
(response는 title, content, image1, image 2, voteCount, commentCount 이렇게 구성되어 있습니다.
image의 종류에 따라 메모리가 크게 변할 수 있음.)
(Before, After는 서로 비슷한 환경에서 테스트함.)
Before
After
적용 전엔 메모리 사용량이 점점 증가했다면, 적용 후엔 오히려 감소하는 걸 볼 수 있습니다.
(테스트 당시에 데이터 개수가 많지는 않았습니다.)
좀 더 많은 데이터를 갖고 체크해 봤습니다.
(Before, After와 다른 환경입니다. (데이터 크기, 내용..))
데이터가 많아도 한 번에 모든 데이터를 로드하지 않고,
정해진 범위 내의 데이터만 로드하기 때문에 효율적으로 메모리를 관리할 수 있는 것 같습니다!
추가로 참고하면 좋은 것
- 애플 기본 갤러리에 있는 이미지는 생각보다 많은 메모리를 차지한다.
- 스크롤 속도에 따라 그래프 모양은 달라질 수 있으니 참고하시길..
'iOS' 카테고리의 다른 글
App Store 배포 리젝 사유 회고 2.1 , 1.2 (0) | 2023.06.27 |
---|---|
App Store 배포 회고(with. 개발 & 책임) (0) | 2023.06.25 |
[Swift] firebase - 이메일 중복 검사 (0) | 2023.04.12 |
[UITest] password textFiled 에 tap 이 안 될 때? (0) | 2023.04.04 |
[Swift] Alamofire 를 쓴다면 꼭 알아야 하는 내용 (0) | 2023.03.23 |