Выполнение начальной оценки эффективности
Так, у Вас есть некоторый код, и Вы хотите видеть, страдает ли он от проблем производительности. Где Вы запускаете? Не все проблемы сразу видимы. Вы могли бы заметить, что работа заняла несколько секунд для выполнения, но Вы не могли бы заметить работу, использовавшую слишком много циклов CPU или выделившую слишком много памяти. Это - то, где инструменты производительности Apple играют роль. Они могут помочь Вам видеть легко пропущенные аспекты своей программы.
Следующие разделы обеспечивают краткий обзор того, как использовать некоторые ключевые инструменты, начиная анализировать Вашу программу. Эти инструменты хороши для идентификации потенциальных проблем и могут обеспечить существенное количество данных о производительности. Помните, тем не менее, что могут быть другие инструменты, предоставляющие более определенную информацию, связанную с проблемой. Запуск Вашего приложения с несколькими другими инструментами может помочь Вам подтвердить, является ли определенной областью проблема.
Для получения дополнительной информации об инструментах производительности в целом, включая то, где получить их, посмотрите Инструменты Производительности.
Используя вершину
top
инструмент является важным инструментом для идентификации потенциальных проблемных областей в процессе. Этот инструмент выводит на экран периодически выбираемый набор статистики по системному использованию. Используя top
и понимание его вывода является превосходным способом идентифицировать потенциальные проблемы производительности.
top
инструмент выводит на экран периодически обновляемую статистику по использованию CPU, использование памяти (в различных категориях), использование ресурсов (таких как потоки и порты), и события разбивки на страницы. В режиме по умолчанию, top
загрузка ЦП дисплеев и использование памяти всех системных процессов. Можно использовать эту информацию для наблюдения, сколько памяти программа использует и какой процент процессорного времени это использует. Неактивная программа не должна использовать процессорное время, и активный должен использовать пропорциональную сумму процессорного времени на основе сложности задачи.
Перечисление 4-1 показывает типичный статистический вывод от top
. Для разработчиков приложений статистические данные, которыми необходимо больше всего интересоваться, являются использованием CPU, резидентное частное использование памяти (RPRVT
), и уровни pagein/pageout. Эти значения говорят Вам некоторые ключевые вещи об использовании ресурсов Вашего приложения. Высокое использование CPU может означать, что задачи Вашего приложения не настраиваются соответственно. Увеличенное использование памяти и page-in/page-out уровни могут указать потребность сократить объем потребляемой памяти Вашего приложения.
Вывод Listing 4-1 Typical вершины
Processes: 36 total, 2 running, 34 sleeping... 81 threads |
Load Avg: 0.24, 0.27, 0.23 CPU usage: 12.5% user, 87.5% sys, 0.0% idle |
SharedLibs: num = 77, resident = 10.6M code, 1.11M data, 4.75M LinkEdit |
MemRegions: num = 1207, resident = 16.4M + 4.94M private, 22.2M shared |
PhysMem: 16.0M wired, 25.8M active, 48.9M inactive, 90.7M used, 37.2M free |
VM: 476M + 39.8M 6494(6494) pageins, 0(0) pageouts |
PID COMMAND %CPU TIME #TH #PRTS #MREGS RPRVT RSHRD RSIZE VSIZE |
318 top 0.0% 0:00.36 1 23 13 172K 232K 380K 1.31M |
316 zsh 0.0% 0:00.08 1 18 12 168K 516K 628K 1.67M |
315 Terminal 0.0% 0:02.25 4 112 50 1.32M 3.55M 4.88M 31.7M |
314 CPU Monito 0.0% 0:02.08 1 63 35 896K 1.34M 2.14M 27.9M |
313 Clock 0.0% 0:01.51 1 57 38 1.02M 2.01M 2.69M 29.0M |
312 Dock 0.0% 0:03.72 2 77 78 2.18M 2.28M 3.64M 30.0M |
311 Finder 0.0% 0:07.68 4 86 171 7.96M 9.15M 15.1M 52.1M |
308 pbs 0.0% 0:01.37 4 76 40 928K 684K 1.77M 15.4M |
285 loginwindow 0.0% 0:07.19 2 70 58 1.64M 1.93M 3.45M 29.6M |
282 cron 0.0% 0:00.00 1 11 14 88K 228K 116K 1.50M |
245 sshd 0.0% 0:02.48 1 10 15 176K 312K 356K 1.41M |
222 SecuritySe 0.0% 0:00.14 2 21 24 476K 828K 1.29M 3.95M |
209 automount 0.0% 0:00.03 2 13 20 336K 748K 324K 4.36M |
200 nfsiod 0.0% 0:00.00 1 10 12 4K 224K 52K 1.22M |
199 nfsiod 0.0% 0:00.00 1 10 12 4K 224K 52K 1.2 |
[...] |
В его области заголовка, top
статистика дисплеев по глобальному состоянию системы. Эта информация включает средние числа загрузки; общий процесс и количества потока; и общая память, разломанная на различные категории такой как частный, совместно использованный, соединенный проводом и свободный. Это также включает глобальную информацию относительно системных платформ. Равномерно, top
обновления эти статистические данные для учета недавнего системного действия.
Таблица 4-1 описывает колоночные данные, появляющиеся в режиме загрузки ЦП и использования памяти с помощью -w
параметр. Для получения дальнейшей информации, о как top
сообщает информацию, посмотрите top
страница справочника.
Столбец | Описание |
---|---|
| |
| Имя исполнимого или пакета приложений. (Обратите внимание на то, что менеджер по Фрагменту Кода, которым приложения называют в честь собственного процесса, запускающего их, |
| Процент циклов CPU, использованных во время интервала от имени этого процесса (и ядро и пространство пользователя). |
| Сумма процессорного времени (minute:seconds.hundredths) использованный этим процессом, так как это было запущено. |
| |
| Число объектов порта Маха принадлежит этому процессу. (Для отображения значения дельты относительно значения, сначала выведенного на экран, когда |
| Число областей памяти. |
| Частное адресное пространство в настоящее время выделяется. (Это значение выведено на экран только с |
| Общая сумма резидентной частной памяти. (Для отображения значения дельты относительно предыдущей выборки используйте |
| Резидентная общая память. (Для отображения значения дельты относительно предыдущей выборки используйте |
| Общая резидентная память как реальные страницы, которые этот процесс в настоящее время связывал с ним. Некоторые могут быть совместно использованы другими процессами. (Для отображения значения дельты относительно предыдущей выборки используйте |
| Общее адресное пространство, в настоящее время выделяемое, включая общую память. (Для отображения значения дельты относительно предыдущей выборки используйте Это значение главным образом не важно для процессов OS X. Каждое приложение имеет большой виртуальный размер из-за совместно используемой области, используемой для содержания кода библиотеки и платформы. |
RPRVT
данные (для резидентных частных страниц) являются хорошей мерой того, сколько реальной памяти приложение использует. RSHRD
столбец (для резидентного объекта поделился страницами) показывает резидентные страницы всех совместно используемых отображенных файлов или объектов памяти, совместно использующихся с другими процессами.
Таблица 4-2 показывает столбцы, выведенные на экран в считающем событие режиме, включенном с любым -e
, -d
, или -a
опция на командной строке. Можно использовать эти опции получить дополнительное понимание об определенных способах поведения приложения. Например, можно коррелировать число отсутствий страницы с объемом памяти, который приложение использует, чтобы определить, мог ли бы объем потребляемой памяти приложения быть слишком большим.
Используя инструменты
Инструменты являются невероятно мощным инструментом, который можно использовать, чтобы собрать данные о производительности и проанализировать полное поведение приложения. Инструментальные приложения поддержки приложений, работающие или в OS X или в iOS. Когда в сомнении, необходимо запустить анализ эффективности с помощью Инструментов, потому что это просто использовать и дает Вам большое разнообразие опций для сбора данных. Одна из более полезных функций Инструментального приложения является возможностью видеть различные типы информации о производительности, изображенной в виде графика рядом. Наблюдение информации таким образом упрощает идентифицировать тренды и отношения между на вид различными метриками.
При первом запуске Инструментов Вас просят выбрать стартовый шаблон для Вашего документа (рисунок 4-1). Шаблоны прибывают предварительно сконфигурированные с одним или более инструментами, разработанными для сбора данных для особых ситуаций. Например, шаблон Leaks включает и инструмент ObjectAlloc и инструмент Утечек, позволяя Вам видеть и общее количество блоков памяти, выделенных и подмножество тех блоков памяти, которые считают утечками. Можно добавить больше инструментов к документу в любое время, но общие конфигурации, предоставленные шаблонами, обычно достаточны для типичных задач.
При создании документа можно также принять решение собрать данные для приложения, работающего или в OS X или в iOS. Выбор определенной платформы конфигурирует документ для той платформы по умолчанию, но можно изменить платформу позже в случае необходимости.
После создания документа необходимо выбрать, какое приложение (или приложения) Вы хотите, чтобы Инструменты контролировали. Вы делаете это использование Значения по умолчанию управление Target на панели инструментов документа. Рисунок 4-2 показывает инструментальный документ, сконфигурированный, чтобы запустить и контролировать приложение на основанном на iOS устройстве. При трассировке приложений для iPhone Вы запускаете исполнимую программу как часть полного процесса трассировки. Для основанных на OS X приложений некоторые инструменты дают Вам опцию присоединения к уже рабочему процессу.
После выбора процесса Вы хотите контролировать, Вы нажимаете Кнопку записи, и Инструменты начинает записывать данные для выбранного приложения. Запись данных имеет место в режиме реального времени, таким образом, можно взаимодействовать с приложением и инициировать любые задачи, Вы хотите проверить на проблемы производительности. Поскольку Вы управляете своим приложением, Инструменты показывает получающиеся данные в окне документа трассировки. Чтобы прекратить записывать, нажмите Кнопку записи снова, которая должна теперь быть названа Остановка.
Рисунок 4-3 показывает данные, собранные для примера приложения MoveMe после того, как будет работать запись. Графическое представление для большинства инструментов конфигурируемо так, чтобы можно было смотреть на данные, которые являются самыми интересными Вам. В числе инструмент ObjectAlloc показывает общую сумму выделенной памяти, но можно также изменить дисплей для показа плотности выделений памяти в любой момент времени. Ниже графического представления можно просмотреть подробные данные, который был собран Инструментами от запущенного приложения.
Для получения дальнейшей информации о том, как использовать Инструменты и для получения информации о типах данных о производительности, которые можно собрать, см. Инструментальное Руководство пользователя.
Используя кварцевую отладку
Кварцевая Отладка является важным инструментом для определения эффективности Вашего кода для прорисовки. Инструмент собирает информацию от вызовов получения Вашей программы для обнаружения, где программа рисует и перерисовывает ли это содержание излишне. Рисунок 4-4 показывает Кварцевое окно Параметров отладки.
С Flash экран обновляет включенную опцию, Кварцевая Отладка показывает Вам визуально, где Ваш код рисует. Это помещает желтый прямоугольник по области, где работа перерисовки собирается произойти и затем паузы кратко прежде, чем перерисовать содержание. Этот мерцающий желтый образец может указать на места, где Вы рисуете больше, чем необходимо. Например, при обновлении только небольшой части пользовательского представления Вы, вероятно, не хотите быть вынужденными перерисовать все представление. Также, если Вы видите, что системное управление перерисовывается несколько раз по очереди, оно могло бы указать на потребность скрыть то управление прежде, чем изменить его атрибуты.
Дисплеи опции «Flash identical updates», красные по любым областям, получающиеся биты которых идентичны текущему содержанию. Можно использовать эту опцию обнаружить избыточные операции рисования в коде.
Используя регулирование вращения
Если приложение становится безразличным когда-либо, сервер окна уведомляет пользователя относительно этой ситуации путем изменения курсора на вращающееся многокрасочное колесо. Если Ваше приложение является тем, которое безразлично, выбирание его в течение того времени может помочь Вам определить, почему это безразлично. Однако, даже если у Вас есть Инструменты или другой инструмент, готовый пойти, Вы не могли бы быть в состоянии, запускают их достаточно быстро для сбора ряда выборок в течение безразличного периода. Это - то, где Регулирование вращения предоставляет полезное решение.
Регулирование вращения является контрольным инструментом, что автоматически выборки, в то время как они безразличны. Просто запустите Регулирование вращения и оставьте его работающий на Вашем компьютере каждый раз, когда Вы тестируете свое приложение. Когда вращающийся курсор появляется, Регулирование вращения автоматически начинает выбирать Ваше приложение, делая результаты доступными из его главного окна, как показано на рисунке 4-5.
Для просмотра следа для определенного сеанса выберите тот сеанс и нажмите Open. Регулирование вращения выводит на экран окно браузера, содержащее демонстрационные данные, как показано на рисунке 4-6. Можно переместиться по стекам вызовов для потоков и использовать данные для обнаружения, какая функция или методы выполнялись, в то время как приложение было безразлично. Средства управления в нижнем левом углу окна позволяют Вам инвертировать информацию о стеке вызовов и изменить способ, которым Вы просматриваете выборки. Кнопки в нижнем правом позволяют Вам сократить стеки вызовов и внимание на самые соответствующие записи.
Если Вы хотите просмотреть полный список стеков вызовов, нажмите кнопку «Show text report» на главном окне. Этот формат показывает отформатированную версию всего набора данных, что можно скопировать и вставить в другие документы.