我正在研究一个连接到Web服务的应用程序,该应用程序在启动期间检索大量数据。我使用并发来避免UI阻塞。我选择了以下核心数据堆栈模式:后台私有moc - >主要moc - >编写器私有moc - >协调器 - >文件。核心数据并发性导入性能
导入操作时会出现问题。 CPU被100%使用,应用程序在整个过程中变得缓慢。我使用300个对象的批次进行处理,共导入约10,000个对象。
对于每个批处理,都会创建一个NSOperation,并使用关联的临时moc作为后台子节点。操作在NSOperationQueue中排队。 导入作业完成后,应用程序变得更慢,具体取决于正在运行的作业数量。我还注意到,当应用程序被杀害,并重新启动,它的方式更加可用和快速。
导入时,我的内存占用量在40Mo和60Mo之间变化。你觉得这太过分了吗?
你认为我的堆栈模式适合我的需求吗?我应该迁移到2个协调员的堆栈吗?
此外,当获取数据以显示在tableView中时,我应该使用performBlockAndWait在显示视图之前立即获取数据吗?
感谢您的帮助
你能发表一些代码吗? – lukaivicev
从来没有一位作家会通过主要的moc去找协调员。当您保存堆栈时,您将失去所有性能提升。 – Avi
感谢您的回答。所以我应该设置作家上下文的背景上下文子节点,并让主要上下文直接链接到协调器?但根据@MattMorey的说法,作者应该是主https://speakerdeck.com/player/360691a030570131a0a76af09d9fc329#的父亲? –