project/개발 업무

iOS 캐싱 로직 구현 전 디스크 분석

lgvv 2024. 12. 9. 00:39

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

 

 

예제 샘플 파일

ArchitectureExample.zip
0.71MB

 

 

Instuments 분석 이미지

두가지 얼마나 차이나는지 궁금해서 간단하게 비교해봄.

인스트루먼트 직접 확인하기

 

Filemanager

쓰기 작업

  • write 안에 자세히 보니까 4KB씩 작성되는거 확인

쓰기 작업


읽기 작업

읽기 작업

 

 

CoreData

CoreData는 쓰기 후 읽기를 수행

CoreData