我在iPhone平台上的Objective-C中有一个对象图,我希望在关闭应用程序时保持闪存.该图有大约100k-200k的对象,并包含许多循环(按设计).我需要能够尽快读/写这个图.
到目前为止,我已经尝试过使用NSCoder.这不仅与循环斗争,而且需要一个年龄和大量的内存来持久化图形 – 可能是因为XML文档被用于封面.我还使用了SQLite数据库,但是通过这么多行也需要花费大量的时间.
我曾考虑使用Core-Data,但担心我会遇到与SQLite或NSCoder相同的问题,因为我相信核心数据的后备存储将以相同的方式工作.
那么有没有其他方法可以轻量级地处理这个对象图的持久性 – 理想情况下我喜欢Java的序列化?我一直在考虑尝试Tokyo Cabinet或将一堆C结构占用的内存写入磁盘 – 但这将是很多重写工作.
最佳答案 我建议重新写作c结构.我知道这将是一个痛苦,但不仅会快速写入磁盘,但应该表现得更好.
在任何人感到不安之前,我并不是说人们应该总是使用结构,但在某些情况下,这实际上对性能更好.特别是如果你一次预先分配你的内存20k连续块(用指针指向块),而不是在重复循环中创建/分配大量的小块.
即如果你的循环不断地分配对象,那将会减慢它的速度.如果你预先分配了1000个结构并且只有一个指针数组(或一个指针),那么这个数字会大很多.
(我的情况甚至我的桌面mac太慢了,没有足够的内存来处理连续创建的数百万个对象)