2010-02-12 90 views
2

我有一個很奇怪的問題。我在分離的線程中運行一個循環,並且我的循環中的一些代碼行(循環的每次迭代中的不同行)都需要很長的時間(〜45秒)才能執行,即使它們是簡單的命令用數據初始化一個NSXMLDocument。這個問題也非常不一致,並且不會在同一地點或每次發生。任何想法爲什麼發生這種情況?爲什麼我的Cocoa應用程序中的某些行會永遠運行?

PS。由於我的代碼太長而且複雜,並且問題不一致,因此我無法發佈任何示例代碼:/

+0

也許你應該重構你的代碼來消除複雜性,這個問題將變得純粹,或者在清理過程中自行修復。 – 2010-02-12 01:13:17

+0

考慮到正在加載的XML文檔的大小,即使這樣一個簡單的「命令」可能需要很長時間才能運行,因爲在所有這些奇特的類名稱後面實際上是完成了大量繁重的工作 - 在使用字符串時這會生效兩次數據。 – arul 2010-02-12 01:25:37

回答

2

不要猜測性能問題。有很多工具可以幫助您確定發生了什麼問題,其中包括應用程序中的CPU採樣器Shark。這兩種方法都可以讓你準確地分析CPU時間到底在哪裏,所以你可以做些什麼。

0

別人怎麼說;你應該使用儀器來確定時間在哪裏。尤其是,您需要使用CPU採樣器工具和虛擬內存活動工具。

從它的聲音,我敢打賭,你的應用程序正在導致系統內存不足並開始分頁到磁盤。這將完全按照你描述的方式殺死表現;在運行期間的某個不確定的時間,看起來應用程序要麼超級緩慢,要麼暫停一段時間。

您應該也許應該使用Object Alloc工具來確定您是否按預期使用內存,如果使用了相當多的內存,您可能會優化內存使用。

相關問題