2012-08-16 89 views
0

我在应用程序中测试性能,看看它如何处理大量数据。我的应用程序是基于核心数据的,并且 使用实体模式下的数组控制器来获取数据。受管理的对象上下文花费太长的时间来加载

我发现我的应用程序获取了核心数据中存在的所有托管对象 ,因此我在启动时设置了控制器阵列 的获取谓词。这大大减少了获取对象的数量。但问题是我的应用程序在充满数据时仍然需要很多时间才能启动。

我在乐器中运行应用程序,核心数据提取工具 确认这不是问题(我的应用程序在启动时仅提取20-30个 对象)。但是在Shark下运行它,我可以看到在启动后4-5秒内,对于 ,堆栈上唯一的调用是对应于管理对象上下文的应用程序 。因此,我认为它与被管对象上下文和存储的数据之间的交互有关,即使我 不提取所有数据。如果我清空应用程序或在其中保留少量数据,它会很快启动。

有人知道为什么会发生这种情况吗?我错过了明显的东西吗? 为什么如果I 只能获取很少的对象,那么要加载的管理对象上下文如此之多?我总是阅读核心数据量表, 编程指南指出10.000个对象对于核心 数据并不多,但在我的应用程序中它有很大的不同,所以我想知道我在哪里 我错了。

回答

0

太棒了!

问这个问题后的几秒钟,我找到问题根源并解决它!

只是为了谁可能面临这样的问题人民:

您需要启用使用延迟装载对象控制器为您在应用程序中使用使用来解决性能问题,每个NSArray的控制器核心数据管理对象上下文

并在这里你去!
应用程序的启动速度与您点击它一样快!

相关问题