Почему определенные строки в моем приложении Какао работают вечно? - PullRequest
2 голосов
/ 12 февраля 2010

У меня очень странная проблема. Я запускаю цикл в отдельном потоке, и некоторые строки кода в моем цикле (разные строки в каждой итерации цикла) выполняются очень долго (~ 45 секунд), даже если они представляют собой простые команды инициализация NSXMLDocument с данными. Эта проблема также очень противоречива, и она не возникает в том же месте или каждый раз. Есть идеи, почему это происходит?

PS. Так как мой код очень длинный и сложный, а проблема непоследовательна, я не могу опубликовать пример кода: /

Ответы [ 3 ]

2 голосов
/ 12 февраля 2010

Не гадайте о проблемах с производительностью. Существует множество инструментов, которые помогут вам определить, что происходит, в том числе CPU Sampler в приложении Instruments и Shark . И то, и другое позволит вам точно проанализировать, куда уходит процессорное время, поэтому вы можете что-то с этим сделать.

0 голосов
/ 12 февраля 2010

что говорили другие; Вы должны использовать инструменты, чтобы определить, куда идет время. В частности, вы захотите использовать инструмент сэмплера ЦП и инструмент активности виртуальной памяти.

Исходя из этого, я бы поспорил, что ваше приложение заставляет систему исчерпать ОЗУ и начать подкачку на диск. Это точно скажется на производительности убийства, как вы описываете; в какое-то неопределенное время во время выполнения кажется, что приложение либо очень медленное, либо просто на время останавливается.

Вероятно, вам также следует использовать инструмент Object Alloc, чтобы выяснить, используете ли вы память, как ожидалось, и, если вы используете довольно много, где вы могли бы оптимизировать использование памяти.

0 голосов
/ 12 февраля 2010

Используйте Инструменты , чтобы выяснить, почему.

...