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
Instruments 분석 이미지
두 가지가 얼마나 차이나는지 궁금해서 간단하게 비교해봄.
FileManager
쓰기 작업
- write 안을 보면 파일시스템 블록 단위로 처리됨(APFS 기본 블록 4KB). 작은 변경이라도 블록 단위로 재기록되어 잦은 변경엔 비효율
읽기 작업
CoreData
CoreData는 쓰기 후 읽기를 수행
'Project > 개발 업무' 카테고리의 다른 글
| Tuist CocoaPod 연동 (0) | 2025.07.05 |
|---|---|
| (Concurrency, Combine) 전역 이벤트 관리 (1) | 2025.05.31 |
| iOS 빌드 메시지 분석해서 빌드 시간 개선하기 (0) | 2024.12.03 |
| iOS Combine을 활용해 로그인 상태 관리 기능 구현 (0) | 2024.11.27 |
| iOS 멀티캐스트 딜리게이트 패턴 활용한 로그인 상태 관리 구현 (0) | 2024.11.27 |