我一直在开发具有核心数据的Cocoa应用程序。最初一切似乎都很好,但是当我将数据添加到应用程序时,我发现初始数据窗口需要很长时间才能加载。为了解决这个问题,我转移到另一个没有数据的启动窗口,所以启动很快。然而,无论我做什么,我的第一次获取和我第一次尝试加载数据窗口(使用表视图)总是很慢。 (也就是说,如果我慢慢读取数据,然后询问数据窗口,那么第一次都会变慢。)然后,性能可以接受。缓慢加载核心数据中的持久性存储协调器
我追踪了我的应用程序,发现虽然我可以快速地完成程序,但无论如何,检索持久性店铺协调员的步骤非常慢......使用旋转的沙滩球可能会花费15到20秒。
我读过其他地方,我可能要进行非规范化的数据。我不认为这是足够的。早期的版本在实体之间“相互关联”要少得多,它在启动时仍然是一团糟。现在我正在查看可能拥有高达18,000个托管对象的实体。一些关系对于使数据正常工作至关重要。
我也看到了有关使用在后台单独的管理对象范围内的选择。问题在于,即使是这种背景环境也需要很长时间才能使用。如果用户试图运行搜索,他或她仍然会永久等待该上下文加载。当用户决定要在搜索字段中输入什么内容时,我可能会花几秒钟购买自己的产品,但我无法承受25秒的停顿时间。
我们注意到:一旦数据被导入到持久性存储,甚至搜索上是不相关的人(和只有1000个对象)仍需要年龄加载表。原因似乎是协调器检索本身很慢,而不是实际的获取或上下文。
任何人都可以点我就如何解决这个正确的方向?谢谢!
18,000不是很大......它实际上是非常小的核心数据...不幸的是,你没有提供足够的信息。加载PSC可能涉及很多事情,如迁移等。此外,获取与PSC的初始创建无关,所以我很困惑你为什么混合了PSC和获取。也许如果你展示了一些代码,以及代码的哪些部分将会消失很长时间,这将有所帮助。否则,你得到的答案将是纯粹的猜测。 –
同意Jody。你必须提出一个更具体的问题。如果你的论文是正确的,并且是PSC,请修改问题以显示如何创建它。 – Mundi
打开商店同步访问文件系统。如果你能帮助它,不要从主队列中打开商店。 – quellish