我有一个应用程序,我正在实施全文搜索。我有2个参与者:关键词和文章之间有多对多的关系。 有问题的一段代码是这样的:这段代码为什么这么慢? (CoreData&NSSet)
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
哪里是错误的,我能做些什么来加快速度?
您应该期望模拟器运行速度比设备快得多。这就是说,十分之二秒显得很慢。 'mySet'中有多少个对象?在循环之前有 – kubi 2010-12-19 16:20:47
在mySet中没有。当我输入d例如mySet填充17个对象。大约需要一秒钟。 – 2010-12-19 16:46:19
请注意,使用'NSLog'将所有东西打印到控制台也需要一些时间。你注意到缓慢之前还是之后添加了'NSLog'? – fabian789 2010-12-19 16:49:46