核心数据效率

时间:2012-06-03 22:32:02

标签: iphone core-data processing-efficiency

将4种类型的属性存储到Core Data中的32位int是否过度? 或者我应该为每个属性创建一个单独的属性? (将使用逻辑运算符来设置/获取)。

我计划在现有对象中添加一个新实体,该对象将包含200-400个项目,其中包含大约14个属性(包括用于排序目的的“索引”属性)。任何时候只能操作或查看一组。

我需要维护撤消支持(引用How do I improve performance of Core Data object insert on iPhone?

如果我将多个属性存储到单个字段中,我可以将其减少到大约8个属性。除了可搜索问题,我是否会节省可观的空间?

此外,在一个不断增长的项目列表中存储一组400个对象是不合理的,这些项目将以每周大约1-3个的速度增长?

我听说有些人在核心数据中存储了数千个项目,所以也许我是偏执狂。我想从长远来看,我需要提供一个导出存档选项,也许是iCloud。

1 个答案:

答案 0 :(得分:1)

所以你说你有400个具有14个属性的对象,你可以将它们存储为单独的整数,还是组合成更少的32位(4字节)值?

400 x 14 x 4字节= 22,400字节

这根本不是太大的空间。如果你把它减少一半,你就节省了11K,这可能会与你为编码和解码这些值而生成的额外代码的大小相形见绌。

但是不要相信我的话:编写一个小的测试程序,将值填充到Core Data中,然后在探查器下运行它以查看会发生什么。

您还可以阅读SQLite以及它如何存储值,因为这就是Core Data正在使用的内容。

我的直觉说你是偏执狂的,你的代码琐事无济于事。更糟糕的是,当你忘记你正在使用符号扩展进行移动时,这将是一个很好的方式来引入真正微妙的错误。 (而且我喜欢编写令人讨厌的代码!)