我有一个非常奇怪的问题。我在一个分离的线程中运行一个循环,我的循环中的一些代码行(循环的每次迭代中的不同行)需要很长时间(~45秒)才能执行,即使它们是简单的命令,如用数据初始化 NSXMLDocument。这个问题也很不一致,不会出现在同一个地方,也不是每次都出现。任何想法为什么会发生这种情况?
PS。由于我的代码又长又复杂,而且问题不一致,所以我不能发布任何示例代码:/
我有一个非常奇怪的问题。我在一个分离的线程中运行一个循环,我的循环中的一些代码行(循环的每次迭代中的不同行)需要很长时间(~45秒)才能执行,即使它们是简单的命令,如用数据初始化 NSXMLDocument。这个问题也很不一致,不会出现在同一个地方,也不是每次都出现。任何想法为什么会发生这种情况?
PS。由于我的代码又长又复杂,而且问题不一致,所以我不能发布任何示例代码:/
不要猜测性能问题。有很多工具可以帮助您确定问题所在,包括Instruments应用程序中的CPU Sampler乐器和Shark。这两个都可以让您准确分析 CPU 时间的去向,以便您可以做一些事情。
使用仪器找出原因。
别人怎么说;您应该使用 Instruments 来确定时间的去向。特别是,您需要使用 CPU 采样器乐器和虚拟内存活动乐器。
从它的声音来看,我敢打赌,您的应用程序正在导致系统耗尽 RAM 并开始分页到磁盘。这将完全按照您描述的方式杀死性能;在运行期间的某个不确定时间,该应用程序似乎要么超级缓慢,要么只是暂停了一段时间。
您可能还应该使用 Object Alloc 工具来确定您是否按预期使用内存,如果使用很多,您可以在哪里优化内存使用。