【问题标题】:Does the performance of saving a ManagedObjectContext depend on the number of contained (unchanged) objects?保存 ManagedObjectContext 的性能是否取决于包含(未更改)对象的数量?
【发布时间】:2011-01-14 20:10:27
【问题描述】:

一般的 CoreData/SQLite 问题

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

  • 在包含 10NSManagedObjectContext 中添加/更改/删除 一个 对象后,否则未更改 NSManagedObjects
  • 在包含 10'000NSManagedObjectContext 中添加/更改/删除 一个 对象后,否则未更改 NSManagedObjects

【问题讨论】:

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


    【解决方案1】:

    根据我对 Enterprise Objects(Core Data 是从它演变而来)的经验进行概括,我想说的是,如果没有索引,您的两种情况都会同样快,而使用索引的情况会稍微慢一些。

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

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

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

    【讨论】:

    • 如果这是最佳答案,请点击旁边的复选标记,以便系统知道问题已得到解答,并且我可以获得那些甜蜜的、甜蜜的代表点数。
    • 对不起,我一定是在睡觉。昨天忙了一天,忘记检查了。
    【解决方案2】:

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

    【讨论】:

    • 我对使用 SQLite 的实际体验最感兴趣。显然我可以用假内容建立一个假数据库来查看差异......但这需要很长时间;)
    【解决方案3】:

    在我之前的经验中没有显着差异。如果要添加/更改/删除的对象包含很多索引属性,那么与没有索引属性的对象相比,它会稍微多一些,但这是可以预料的,因为索引也会被修改。

    【讨论】:

    • 谢谢,很高兴知道索引起作用。我并没有真正想到这一点,但完全有道理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多