保存ManagedObjectContext的性能是否取决于包含(未更改)对象的数量?

时间:2010-02-09 14:20:53

标签: iphone objective-c performance core-data nsmanagedobject

一般的CoreData / SQLite问题

使用SQLite存储保存NSManagedObjectContext时,这两种情况之间是否存在显着差异:

  • NSManagedObjectContext中添加/更改/删除一个对象,其中包含 10 ,否则保持不变NSManagedObjects
  • NSManagedObjectContext中添加/更改/删除一个对象,其中包含 10'000 ,否则保持不变NSManagedObjects

3 个答案:

答案 0 :(得分:2)

根据我对Enterprise Objects(Core Data演变而来)的经验进行概括我会说,如果没有索引,你的两个场景都会同样快,而第二个场景的索引速度稍慢。

使用和SQL存储,无论图中有多少其他对象,添加一个对象的成本都基本固定。索引确实会导致缩放效果,因为索引依赖于其他现有对象。但是,在绝大多数情况下,这并不重要。

图表中的关系越复杂,总图表大小就会影响更多的保存。显然,如果你只有十个对象的图形,那么任何关系都不能有十个以上的对象。如果你有一个10,000,那么关系可能会更大,需要更长的时间来处理。

总之,带有SQL存储的Core Data似乎在很大程度上不受图形大小的影响。

答案 1 :(得分:1)

分析会告诉您是否存在显着差异。但是,我怀疑商店协调员的类型会影响表现。更新SQLite数据库中的对象可能比在XML树中更快,更具可伸缩性。

答案 2 :(得分:0)

根据我以前的经验,没有显着差异。如果要添加/更改/删除的对象包含许多索引属性,那么与没有索引属性的对象相比,它只需稍微多一些,但这是预期的,因为索引也将被修改。 / p>