Анализ использования CPU в приложении

Обеспечение эффективного использования всех доступных ресурсов важно при записи кода для приложения. Одним из самых важных ресурсов является CPU. Эффективное использование CPU позволяет Вашему приложению работать быстрее и эффективнее. Даже при том, что Вы будете писать свое приложение для определенной платформы, иметь в виду, что даже тот же общий тип платформы может иметь различные возможности ЦП. Шаблоны трассировки CPU предоставляют Вам средние значения для проведения тестирования под множеством потенциальных условий, позволяя Вам идентифицировать, как хорошо Ваше приложение использует многократные ядра, сколько энергии Вы используете, и другие измерения ресурса.

Поиск узких мест со счетчиками монитора производительности

Счетчики монитора производительности (PMCs) являются аппаратными регистрами, измеряющими события, происходящие в процессоре. Они могут использоваться, чтобы помочь найти узкие места в Вашем приложении путем идентификации чрезмерной суммы событий определенного типа. Например, высокое число команд условного перехода может указать раздел логики, которая, если перестроено, могла бы понизить число требуемых ответвлений. Даже при том, что события PMC могут обнаружить эти проблемы, Вам решать чтобы соответствовать им к Вашему коду и решить, как они помогут Вам улучшить производительность своего приложения.

В Инструментах Вы отслеживаете события PMC с помощью инструмента Счетчиков.

bullet
Отслеживать события PMC в инструменте Счетчиков
  1. Откройте шаблон трассировки Счетчиков.

  2. Выберите приложение из целевого меню на панели инструментов.

  3. В Рекордном инспекторе Настроек щелкните плюс кнопка (+) в таблице Events и Formulas.

    ../Art/instruments_counters_config1_2x.png
  4. Выберите событие, которое требуется считать.

    ../Art/instruments_counters_config2_2x.png
  5. Повторите шаги 3 и 4 для добавления большего количества событий при желании.

  6. Нажмите Record и осуществите свое приложение.

  7. Нажмите Stop.

../Art/instruments_trace_document_counters_data_2x.png

Сохранение энергии с энергетическим шаблоном трассировки диагностики

Энергетический шаблон трассировки Диагностики обеспечивает диагностику относительно энергетического использования, а также основные состояния включения - выключения компонентов основного устройства. Этот шаблон состоит из энергетического Использования, активности ЦП, Сетевой активности, Яркости Дисплея, Сна/Следа, Bluetooth, WiFi и инструментов GPS.

  Шаблон The Energy Diagnostics рисунка 10-1 после того, как это собрало данные от устройства на iOS

В то время как устройство используется, с энергетической Входящей в систему Диагностикой Ваше устройство на iOS записывает связанные с энергией данные незаметно. Поскольку журналирование эффективно, можно весь день регистрировать. Журналирование продолжается, в то время как устройство на iOS находится в режиме ожидания, но если батарея устройства высыхает, или устройство на iOS выключается, данные логов потерян.

Установка Developer появляется в приложении Настроек только после того, как Ваше устройство будет настроено для разработки. Установка исчезает после того, как устройство было перезагружено. Восстановите установку путем подключения устройства с XCode или Инструментов.

После того, как события использования достаточной энергии были зарегистрированы, можно проанализировать их путем импорта данных логов от телефона до шаблона Xcode Instruments Energy Diagnostics. Ищите области высокоэнергетического использования и посмотрите, можно ли сократить энергетическое использование в этих областях.

bullet
Отслеживать энергетическое использование на устройстве на iOS
  1. Войдите в Настройки> Разработчик и включите разработчику, входящему в систему устройство на iOS, где Вы хотите получить данные.

    ../Art/Logging_Energy_Usage_in_an_iOS_Device_2x.png
  2. Тренируйтесь Ваше приложение как пользователь было бы.

  3. После получения данных выключите разработчика, регистрирующего.

Минимизируйте сумму энергии Ваше использование приложения путем обеспечения, чтобы Вы выключили любые радио устройства, в которых Вы активно не нуждаетесь. Можно проверить, что Вы выключили определенное радио при помощи энергетического шаблона трассировки Диагностики. В области дорожки каждое радио изображено с красным, чтобы определять, что это идет или с черным цветом, чтобы определять, что это выключено. На рисунке 10-1 отключена дорожка радио GPS, и поэтому ее дорожка появляется в черном цвете.

Исследование использования потока с многожильным шаблоном трассировки

Многожильный шаблон трассировки анализирует Вашу многожильную производительность, включая состояние потока, очереди отгрузки и блочное использование. Это состоит из состояний Потока и инструментов Отгрузки.

Инструмент состояний Потока предоставляет Вам графическое представление состояния каждого потока в определенное время в выполнении. На каждое состояние наносят цветную маркировку, чтобы помочь Вам идентифицировать то, что каждый поток делает в сочетании со всеми другими потоками. Потоки, проходящие через многократные изменения состояния, являются легко идентифицируемыми посредством изменения, раскрашивает область дорожки. Рисунок 10-2 показывает пятнадцать прослеживаемых потоков.

  Действие Потока рисунка 10-2 выведено на экран Многожильным шаблоном трассировки
bullet
Просмотреть использование потока в Вашем приложении
  1. Создайте новый документ трассировки с помощью шаблона Multicore.

  2. Выберите свое приложение из целевого меню на панели инструментов.

  3. Выполните свое приложение.

  4. Выберите инструмент состояний Потока в области Instruments.

  5. Выберите потоки для исследования путем установки флажка в столбце Mark в подробной области.

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

Вместе с инструментом состояний Потока шаблон Multicore содержит инструмент Отгрузки. Используйте инструмент Отгрузки для наблюдения, когда будут выполняться очереди отгрузки. Вы видите, сколько времени диспетчеризированный поток длится и сколько блоков используется.

Многожильная трассировка обрабатывает взаимодействие потока дисплеев по шаблону всюду по Вашему приложению. Однако Вы не в состоянии видеть, какие ядра используются. Для наблюдения базового использования приложением посмотрите Копание в Базовом Использовании с Шаблоном Трассировки Профилировщика Времени.

Копание в базовом использовании с шаблоном трассировки профилировщика времени

Шаблон трассировки Профилировщика Времени выполняет низкие издержки, основанную на времени выборку процессов, работающих на CPUs системы. Это состоит из инструмента Профилировщика Времени только.

Стратегия CPU в инструменте Профилировщика Времени показывает, как хорошо Ваше приложение использует многократные ядра. Выбор стратегии CPU в документе трассировки конфигурирует область дорожки для отображения времени на оси X и ядер процессора на оси y. Используйте представление использования стратегии CPU для сравнения базового использования по данным периодам времени. Эффективный базовый параллелизм улучшает производительность приложения. Области тяжелого использования для одноядерного, в то время как другие ядра остаются тихими, могут изобразить области, нуждающиеся в большей оптимизации.

bullet
Просмотреть отдельное базовое использование
  1. Откройте шаблон трассировки Профилировщика Времени.

  2. Выберите свое приложение из Выбрать всплывающего меню Target на панели инструментов документа трассировки.

  3. Нажмите Кнопку записи.

  4. Осуществите свое приложение, чтобы выполнить код, затем щелкнуть по Кнопке остановки, чтобы получить и проанализировать данные.

  5. Нажмите кнопку стратегии CPU.

  6. Выберите, хотите ли Вы графически вывести на экран диаграмму границей, категорией или использованием в более низком разделе панели инструментов.

  7. Ищите несбалансированное базовое использование.

    ../Art/Monitoring_Multiple_Core_Usage_V6_2x.png

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