我正在构建一个具有“记录”功能的应用程序,该功能可以记录用户随时间的交互。随着时间的推移,我用表示用户输入当前状态的“状态”对象填充内存中的一个数组。一个典型的记录会产生大约 5k 个这样的对象。
然后我使用 NSKeyedArchiver archiveRootObject:toFile: 归档这些数据。这工作正常,但是文件大小非常大(3.5 兆左右)。我的问题是这样的:
归档文件是否存在任何固有的文件大小开销?如果我使用 SQLite,甚至滚动我自己的文件格式,我是否能够使用更少的磁盘空间来保存这些数据?或者减少数据磁盘大小的唯一方法是减少我存储的数字的位深度?
Best Answer-推荐答案 strong>
如果您关心的是性能,Core Data 会为您提供更多的粒度。您可以在应用程序执行期间延迟加载和保存部分,而不是加载/保存整个 3.5Mb 对象图。
如果您关心文件大小,这是 binary plist format ,这是 SQLite file format .但比开销更重要的是对象图和核心数据模型之间的转换有多复杂。
您可能还对以下几种文件格式的速度和性能比较感兴趣:https://github.com/eishay/jvm-serializers/wiki/不确定是否所有内容都有 C、C++ 或 Objective-C 实现。
关于iphone - 在 iOS 中高效存储大量数据,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/7027040/
|