【发布时间】:2013-09-27 22:18:13
【问题描述】:
我有 2 个表(和类似的实体):
类别(具有字符串属性标识符)
CategoryLink(具有属性 category1 和 category2,它们是 Category 对象的指针)
我有一个文本文件,其中包含有关类别及其链接的信息。有关链接的信息表示为一对第一个和第二个链接 ID。
我想使用 Core Data 填充我的数据库。我填写 Category 的速度足够快,但 CategoryLink 的性能存在问题。
我最好的实现是:
获取按标识符排序的所有类别;
从文件中获取整个链接信息到字典数组,按第一项 id 排序;
(1) 中的每个类别的每个类别的循环
在循环 (3) 中,我在迭代中使用 (2) 中的 ID 搜索第二个类别,并创建 CategoryLink 实体的对象。
性能太慢,因为要插入大量的Category 和CategoryLinks 记录。那么有没有办法提高性能呢?
【问题讨论】:
-
哪个部分需要很长时间?另外,是否有重复(如 AB 和 BA)?
-
Category 和 CategoryLink 记录都是唯一的。很难说哪个部分花费的时间最多,因为代码在一个块内。但我认为最长的任务是搜索第二个类别至少与 CategoryLink 实体对象的计数一样多
-
你也可以在一个区块内计时。在两边都做一个
NSTimeInterval x = [[NSDate date] timeIntervalSince1970];并记录差异。 -
好的。我检查了一下,即使没有 (4) 中的其他操作,它仍在搜索第二个类别。但它看起来足够快(约 0.036 秒)。附言你不需要使用特殊的计时器,除非你想执行一些特殊的计算,比如间隔。在大多数情况下,记录一些内容就足够了(它也会写入日志时间)。
-
对于性能问题,请在 Instruments 下运行应用程序。您会更清楚地了解您的应用确切在哪里花费时间。