如何调查SWIFT核心数据中属性的设置非常慢

时间:2017-11-15 10:11:43

标签: swift core-data

我有一个Core Data模型,其中包含一个包含Day实体的Entity TrainingDiary。我已经在32天内设置了几个测试培训日记,另一个完整导入了一个有10,103天的现场培训日记。天和昨天和明天都有相互关系。

我在Day上有一个派生属性,它取一个昨天的值和今天的值来计算今天的值。这很有效但是当滚动表格时它相对较慢。由于经过一天之后,这个值变化非常罕见,我认为最好存储该值并计算一次。

因此,我有一个计算可以在选定的一组天完成。当第一次进口日记时,它将在所有日子进行,但在此之后,绝大多数情况下只会在最近一天进行计算。

当我在测试数据上检查其性能时,我得到以下结果:

  1. 计算32天培训日记中的所有32天需要0.4916秒,其中0.4866秒用于设置Core Data模型上的值。
  2. 计算5,103天培训日记中的32天需要47.9568秒,其中47.9560秒用于在核心数据模型上设置值。
  3. 未保存核心数据模型。我想知道是否有大量的通知发生,所以我删除了我在NSNotification.Name.NSManagedObjectContextObjectsDidChange上设置的观察者,我删除了我的keyPathsForValuesAffectingValue(forKey :)实现的实现,但它没有任何区别。

    我可以在更短的时间内从JSON导入整个日记 - 包括创建所有对象并设置每个值。

    我不知道为什么会这样。是否有任何人对可能采取的措施或采取措施进行调查?

    [我正在使用XCode9和SWIFT4]

0 个答案:

没有答案