gpt4 book ai didi

iphone - 核心数据 "save"操作在 managedObjectContext 上的性能不佳

转载 作者:IT王子 更新时间:2023-10-29 06:32:04 28 4
gpt4 key购买 nike

我有一个使用 Core Data 的 iPhone/iPad 应用。

在我的数据库中,我只有一张表,尽管它非常大(大约 40 列)。当我构建数据库时,我创建并插入了大约 13,000 个新实体,然后调用“saveContext”。

for (NSArray *singleDiamond in allDiamonds)
{
@try
{
if (//Some validation)
{
Diamond *diamond = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([Diamond class])
inManagedObjectContext:self.managedObjectContext];
//Do setup for diamond...
}
}
@catch (NSException *exception) {NSLog(@"%@",[exception message]);}
}
NSLog(@"Start Saving Context...");
[self saveContext];
NSLog(@"End Saving Context...");

我的问题是只有“saveContext”方法需要23 秒 来执行。这是 Not Acceptable 。

我做错了什么吗?我怎样才能提高这里的性能?

最佳答案

你应该在批量插入过程中多次调用saveContext,然后调用reset来“忘记”之前插入的托管对象。例如,在我的例子中,我每 100 个对象保存一次上下文。此外,您应该为导入创建一个专用上下文并优化它(通过将 undomanager 设置为 nil,因为您不需要回滚/撤消整个插入)。在这里阅读:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html

关于iphone - 核心数据 "save"操作在 managedObjectContext 上的性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8134736/

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