为什么我的Cocoa应用程序中的某些行会永远运行?

时间:2010-02-12 01:06:04

标签: objective-c cocoa xcode multithreading execution

我有一个非常奇怪的问题。我在一个分离的线程中运行一个循环,我的循环中的一些代码行(循环的每次迭代中的不同行)执行需要很长时间(~45秒),即使它们是像这样的简单命令使用数据初始化NSXMLDocument。这个问题也非常不一致,并且不会发生在同一个地方或每次。任何想法为什么会发生这种情况?

PS。由于我的代码太长而且复杂,并且问题不一致,我无法发布任何示例代码:/

3 个答案:

答案 0 :(得分:2)

不要猜测性能问题。有很多工具可以帮助您确定出现了什么问题,包括Instruments应用程序中的 CPU Sampler 工具和Shark。这两个都可以让你准确分析CPU时间的来源,这样你就可以做些什么。

答案 1 :(得分:0)

使用Instruments找出原因。

答案 2 :(得分:0)

其他人说的话;你应该使用仪器来确定时间的去向。特别是,您需要使用CPU采样器仪器和虚拟内存活动仪器。

从它的声音来看,我敢打赌你的应用程序导致系统耗尽RAM并开始分页到磁盘。这将完全按照你描述的方式消除性能;在运行期间的某些不确定时间,似乎应用程序要么超级缓慢,要么暂停一段时间。

您可能还应该使用Object Alloc工具来确定您是否按预期使用内存,如果使用了很多内存,您可以优化内存使用。