Как я могу профилировать приложение Monotouch? - PullRequest
0 голосов
/ 16 сентября 2011

Я пытаюсь проанализировать проблему с производительностью в моем приложении для iPhone с помощью инструментов.Я скомпилировал и установил свое приложение в режиме отладки, создал «Time Profiler» и успешно записал некоторые данные рассматриваемого временного интервала, но я не понял, как анализировать записываемые мной данные.

Я понимаю, как обычно работает профилировщик, у меня достаточно опыта работы с Rational Quantify, но в этом случае я в тупике.

Что я хотел бы увидеть: Какие из кодированных мной функций являются узкими местами производительности процессора в течение данного периода времени?

Что я вижу : Множество, казалось бы, незначительных шумов, по-видимому, никак не связанных с кодом моего собственного приложения: http://screencast.com/t/3gYOuwua3

Я пробовал все виды фильтров, но ни один из них не помог.Как мне поступить?

Спасибо,

Адриан

1 Ответ

0 голосов
/ 17 сентября 2011

Это так часто ...

Прежде всего, время «Я» практически бесполезно в любом реальном программном обеспечении. Все, что он делает, это заставляет вас смотреть на это и идти «гак!».

Если бы вы случайно заморозили его в определенный момент времени, вы бы увидели стек вызовов на несколько уровней в глубину, и на вершине стека это будет либо

  • заблокирован во время ввода-вывода, в спящем режиме или в другом некомпьютерном состоянии, или
  • запуск счетчика программы через несколько слоев библиотеки, которые находятся далеко от вашего кода.

Редко можно найти счетчик программы в коде, который вы можете контролировать. Поэтому, даже если вы нашли в своем коде более нескольких процентов собственного времени, исправление этого не может сэкономить больше, чем это.

С другой стороны как насчет других строк кода в стеке? Если вы заморозили его 10 раз, и в 5 из них в стеке была определенная строка кода, вы знаете, что эта строка, если бы вы могли избежать ее выполнения, сэкономит вам примерно 50% .

Я не ищу "медленные функции" или "горячие точки". Техника, которую я использую, это это , и есть гораздо больше причин, почему .

...