Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 迁移后核心数据性能降低_Ios_Objective C_Core Data_Core Data Migration - Fatal编程技术网

Ios 迁移后核心数据性能降低

Ios 迁移后核心数据性能降低,ios,objective-c,core-data,core-data-migration,Ios,Objective C,Core Data,Core Data Migration,在执行轻量级迁移后,我遇到了一些奇怪的核心数据问题——我的iPad应用程序使用的是一个版本化的数据模型,现在我正在迁移到另一个数据模型,只做了一个更改:向实体添加一个属性。迁移进行时没有任何问题,在迁移过程完成后,我可以在迁移所有数据的情况下运行应用程序-唯一的问题是,每个保存请求比迁移前花费的时间多10倍 我已经检查了迁移过程的核心数据日志-没有列出错误 核心数据日志sql查询在迁移前后是相同的,只是速度慢得多 我已经在外部sqlite查看器中打开了sqlite数据库—迁移前的查询时间与迁移后

在执行轻量级迁移后,我遇到了一些奇怪的核心数据问题——我的iPad应用程序使用的是一个版本化的数据模型,现在我正在迁移到另一个数据模型,只做了一个更改:向实体添加一个属性。迁移进行时没有任何问题,在迁移过程完成后,我可以在迁移所有数据的情况下运行应用程序-唯一的问题是,每个保存请求比迁移前花费的时间多10倍

我已经检查了迁移过程的核心数据日志-没有列出错误 核心数据日志sql查询在迁移前后是相同的,只是速度慢得多 我已经在外部sqlite查看器中打开了sqlite数据库—迁移前的查询时间与迁移后的查询时间相同。 我为迁移后的持久性存储添加了NSSQLiteManualVacuumOption,核心数据的性能会稍微好一点,但仍然比迁移前慢很多。
你知道这里会出什么问题吗?如何从迁移前恢复性能

我想我找到了解决办法。我已经用非常基本的自定义迁移取代了自动轻量级迁移——只使用Xcode生成的模型映射——现在一切都很好。看起来自动轻量级迁移机制无法正确处理持久存储的模型和数据,这很奇怪,因为我没有收到任何警告或错误。
谢谢大家的帮助

您是否尝试过新安装,直接使用新模型设置持久存储,而不是迁移旧模型,以确认这实际上是迁移?您是否已使用-com.apple.CoreData.SQLDebug 1运行,以查看Core Data正在运行哪些查询?如果是这样的话,有什么奇怪的地方吗?乐器对性能有什么影响?慢到哪里去了?你有仪器档案要分享吗?@Tommy是的,为当前型号运行fresh应用程序很好,此外,我还调查了com.apple.CoreData.SQLDebug-所有内容都与迁移之前一样。@MarcusS.Zarra我没有在这里使用核心数据仪器,因为它只在模拟器上工作-问题目前只能在设备上重现。您能看到干净安装和迁移之间的SQLite文件有什么区别吗?这不是我见过的东西,我怀疑你已经发现了一些核心数据的bug——也许它会把索引的迁移搞砸?