iOS 캐싱 로직 구현 전 디스크 분석
앱에서 서버를 통해 값을 받아온 후 이 값을 캐싱하고 있다가 사용자가 앱을 종료 후에 다시 접속한 경우 캐싱된 값을 먼저 보여준 후 네트워크 응답이 도착하면 갱신하는 형태로 구현하고자 함.
UserDefaults, SwiftData, CoreData, Realm, Filemanager 중에서 어떤걸 선택하는 것이 좋은지 궁금해서 비교해보기로 함.
- UserDefaults: 간단한 데이터 저장에 유용해 적합하지 않을 것으로 보임.
- SwiftData: iOS 17이상이라서 현재 현실적으로 사용하기가 어려움.
- CoreData: Realm이 있어서 굳이 써야하는지 의문이긴 함.
- Filemanager: 자주 변경되는 데이터라서 성능적으로 적합하지 않을 것 같음.
- Realm: 12.24에 Realm 들어가보니까 디바이스 지원 중단한다는 것 같아서, 장기적으로 지원 끊기는거 아닐까 걱정.
결론적으로 CoreData와 Filemanager만 간단하게 비교 분석해보고자 함.
- 애플에서 Filemanager는 블록 전체를 다시 씀으로 CoreData가 최적화되어 있기에 자주 변경되는 데이터의 경우에는 이를 쓰라고 문서에 적혀 있음.
- https://rldd.tistory.com/723
예제 샘플 파일
Instuments 분석 이미지
두가지 얼마나 차이나는지 궁금해서 간단하게 비교해봄.
Filemanager
쓰기 작업
- write 안에 자세히 보니까 4KB씩 작성되는거 확인
읽기 작업
CoreData
CoreData는 쓰기 후 읽기를 수행
'project > 개발 업무' 카테고리의 다른 글
iOS 앱 크기 줄이기 (1) | 2024.12.29 |
---|---|
iOS 빌드 메시지 분석해서 빌드 시간 개선하기 (0) | 2024.12.03 |
iOS Combine을 활용해 로그인 상태 관리 기능 구현 (0) | 2024.11.27 |
iOS 멀티캐스트 딜리게이트 패턴 활용한 로그인 상태 관리 구현 (0) | 2024.11.27 |
UICollectionView Crashes on iOS 18 with Xcode 16: Troubleshooting Guide (0) | 2024.11.22 |