HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 提高更新Core Data中现有记录(~11.000)的速度大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在解析大量数据,我最初将其插入到核心数据存储中.

稍后,我正在解析相同的XML,尽管其中一些可能已经更新.然后我做的是检查具有相标签的现有记录,如果已经存在,我用数据更新记录.

然而,然我的初始解析(约11.000条记录)需要8秒左右,但更新似乎很昂贵,需要144秒(这些是模拟器运行,因此在实际设备上显着更长).

然第一次很好(我正在显示进度条),但第二次是不可接受的长,我想做一些事情来提高速度(即使它发生在一个单独的线程的后台).

不幸的是,这不是find-or-create的问题,因为XML中的数据可能已经针对单个记录进行了更改,因此每个人基本上都需要更新.

我已经对属性进行了索引,这也加速了初始解析和更新,但它仍然很慢(上面的数字是带索引的).我注意到解析/更新似乎逐渐减慢.然最初很快,但随着越来越多的记录被处理,它变得越来越慢.

所以最后我的问题是,如果我有什么建议可以提高我更新数据集的速度?我正在使用MagicalRecord获取记录.这是代码

Record *record;
if (!isupdatE) {
    record = [NSEntityDescription insertNewObjectForEntityForName:@"Record" inManagedObjectContext:BACkgroundContext];
} else {
    NSPreDicate *recordPreDicate = [NSPreDicate preDicateWithFormat:@"SELF.tag == %@",[[node attributeForName:@"tag"] stringvalue]];
    record = [Record findFirstWithPreDicate:recordPreDicate];
}

解决方法

不要进行大量的提取,而是对每个实体类型进行一次查询,并按标记将它们存储在字典中,然后只检查字典是否存在具有该键的对象.您应该能够将propertiesToFetch设置为仅包含标记,并且应该减少开销.

大佬总结

以上是大佬教程为你收集整理的ios – 提高更新Core Data中现有记录(~11.000)的速度全部内容,希望文章能够帮你解决ios – 提高更新Core Data中现有记录(~11.000)的速度所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。