小编Mik*_*ike的帖子

如何提高iPhone上Core Data对象插入的性能?

我正在尝试将大量数据导入到iPhone上的核心数据存储中.我正在使用SQLite支持核心数据存储.这似乎比我预期的要长.我已经减少了例程,因此它基本上只是尝试获取一个对象(看它是否已经存在),然后创建一个新对象(如果它没有)(他们从来没有这样做,因为我导入数据).但是,提取并不是耗时的部分.这是对象的创建.基本上,违规代码是:

MobileObject *newObject = (MobileObject *)[NSEntityDescription insertNewObjectForEntityForName:objDesc inManagedObjectContext:managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

我注意到在模拟器上,它开始时相当快,大约有100个对象创建了一秒钟.它虽然减慢了,但是当创建了五千个对象时,对于100个对象几乎是2秒,并且当创建一万个对象时,每100个对象为4秒.整组21000个对象需要10分钟以上.这就是取出所有实际有用的代码(这只是一个fetch和一个对象创建).它在实际设备上要慢很多(可能是4倍).

我不明白的是为什么核心数据快速启动但随后开始减速.我已经尝试了索引和我的数据没有索引.我已经尝试创建自己的自动释放池,我会定期在循环中耗尽.我在每个对象创建后都尝试过保存.我试过等到最后才能保存.但无论我做什么,表现仍然看起来很悲惨.将新对象添加到核心数据存储中并且其中包含几千个对象,是否会很慢?有什么建议?

iphone performance core-data

5
推荐指数
1
解决办法
1392
查看次数

标签 统计

core-data ×1

iphone ×1

performance ×1