2014-11-13 1 views
1

Я запускаю приложение через профайлер с частотой дискретизации 1 мс, но мне трудно понять, что означают заголовки столбцов. documentation, кажется, не хватает определений для большинства столбцов заголовков, хотя мне удалось расшифровать Я., # Атман и Само% от ответа here. Это то, что я до сих пор:Понимание заголовков столбцов приборов времени

  • Всего образцов: Общее количество (1 мс) образцов, где программа была в той или иной функции
  • Общее время: Общее время, проведенное в (соответствует общим отсчетам с использованием частоты дискретизации 1 мс)
  • Я: Объясняется в связанном вопросе, но как он отличается от общего времени? Я должен уметь определить значение # Self и Self% из этого.
  • Всего%: Всего образцов в процентах от общего времени работы

остальной части заголовков столбцов, кажется, комбинации из перечисленных выше (возможно, из-за частотой дискретизации 1 мс) или самоочевидны , Например, у меня есть функция, которая занимает 647621 мс общего времени (89,4%), но имеет Self/# Self из 9. Означает ли это, что функция вызывается часто, но занимает мало времени для выполнения? С другой стороны, другая функция занимает 15559 мс общего времени (2,1%), но Self/# Самостоятельно составляет 13099, что означает, что это называется реже, но требуется намного больше времени для завершения. Я на правильном пути?

ответ

2

В последних версиях инструмента нет столбца «Всего образцов», но я объясню разницу между общими образцами, общим временем и «я», потому что он объясняет, как работает инструмент Time Profiler. Инструмент Time Profiler записывает стек вызовов периодически, каждую миллисекунду по умолчанию. В столбце «Всего образцов» указано количество выборок, которые был в стеке вызовов. В столбце «Общее время» указано количество времени, в течение которого метод находился в стеке вызовов. В столбце Self указано количество образцов, в которых метод находился в верхней части стека вызовов, что означает, что ваше приложение находилось в методе, когда инструменты записали образец.

Столбец Self гораздо важнее, чем столбцы Total Samples и Total Time. Функция main() будет иметь высокий общий объем отсчетов и высокое общее время, потому что main() находится в стеке вызовов все время, когда приложение работает. Но тратить время на оптимизацию функции main() в приложении Cocoa/Cocoa Touch - пустая трата времени, потому что все main() запускает приложение. Сосредоточьтесь на методах, которые имеют высокую самоценность.

В последних версиях приборов есть столбец Running Time. Каждое перечисление в столбце имеет два значения: время и процент. Время соответствует общему времени в вашем вопросе. Процент соответствует Total% в вашем вопросе.

UPDATE

Позвольте мне ответить на вопрос о ваших примерах функции в последнем абзаце.Ваше приложение не тратит много времени внутри функции в вашем первом примере (я буду называть ее функцией A), потому что ее запись Self - только 9. Это означает, что было только 9 образцов, где ваше приложение находилось внутри функции A. Высокая общая время означает, что ваше приложение потратило много времени внутри функций, которые вызывает функция A. Функция A часто находится в стеке вызовов, но часто не в верхней части стека вызовов.

В вашем втором примере приложение тратит больше времени на функцию, функция B, потому что его запись Self 13099. Приложение не тратит много времени на функции, которые вызывает функция B, потому что общее время намного меньше , Функция B находится в верхней части стека вызовов чаще, чем A, и в стеке вызовов реже, чем A. Если у вас была проблема с производительностью в вашем приложении, функция B была бы функцией для проверки путей повышения ее производительности. Функция оптимизации A не помогла бы, потому что ее вход в Self был только 9.

+0

Спасибо. Это намного больше смысла, чем документы, особенно материал о main(). Означает ли это, что мой пример с двумя функциями правильно анализируется? – NordCoder

+1

Я обновил свой ответ, чтобы ответить на ваш вопрос. –

+0

Спасибо! Это прекрасно суммирует его :) – NordCoder

 Смежные вопросы

  • Нет связанных вопросов^_^