gpt4 book ai didi

ios - 提高更新核心数据中现有记录 (~11.000) 的速度

转载 作者:可可西里 更新时间:2023-11-01 03:31:24 24 4
gpt4 key购买 nike

我正在解析大量数据,这些数据最初是插入到核心数据存储中的。

稍后,我将解析相同的 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 - 提高更新核心数据中现有记录 (~11.000) 的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10401983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com