【发布时间】:2010-12-19 16:04:04
【问题描述】:
我有一个应用程序,我正在实施全文搜索。我有 2 个实体:关键字和文章之间存在多对多关系。 有问题的代码是这样的:
keywordsInRange = [[[CoreDataManager sharedManager] managedObjectContext] executeFetchRequest:request error:&err];
for(Keywords* word in keywordsInRange) {
NSDate *methodStart = [NSDate date];
[mySet addObjectsFromArray:[word.article allObjects]];
NSDate *methodFinish = [NSDate date];
NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:methodStart];
NSLog(@"Keyword Search Exec Time: %.3f", executionTime);
}
输出是这样的:
Keyword Search Exec Time: 0.235 //added 1 article
Keyword Search Exec Time: 0.216 //added 6 articles
Keyword Search Exec Time: 0.211 //etc
Keyword Search Exec Time: 0.205
Keyword Search Exec Time: 0.204
如您所见,当我在设备(iPad iOS 4.2.1)上测试时,添加所有链接到集合中关键字的文章需要很长时间。当我在模拟器中测试时,时间是:
0.029
0.026
0.026
0.026
0.026
错误在哪里,我能做些什么来加快速度?
【问题讨论】:
-
您应该期望模拟器的运行速度明显快于设备。话虽如此,2/10 秒似乎确实很慢。
mySet中有多少个对象? -
在 for 循环之前 mySet 中没有。例如,当我键入 d 时,mySet 会填充 17 个对象。大约需要一秒钟。
-
请注意,使用
NSLog将所有内容打印到控制台也需要一些时间。您是在注意到速度慢之前还是之后添加了NSLog? -
在注意到代码的哪一部分需要这么多时间来执行之后很慢
标签: iphone core-data ios4 nsset