Контроль использования CPU
Многочисленные элементы портативного компьютера расходуют энергию: экран, GPU, сетевые службы, хранение, память и CPU. Путем сокращения использования приложения этих ресурсов можно расширить время работы от батареи пользователей и улучшить системную скорость отклика и производительность.
Для обращения решений, предлагаемых в остальной части этого руководства, сначала определите, сколько CPU использует приложение. Эта глава представляет различные инструменты для того, чтобы сделать просто это. В остающихся главах Вы изучите, как сократить потребляемую мощность Вашего приложения.
Рассмотрение энергетического влияния
В течение процесса разработки проверьте, что Ваш код эффективен путем тестирования и перетестирования его производительности. В XCode, открытом навигатор отладки и выбор энергетический прибор Влияния. Это выводит на экран отчет текущего энергетического влияния Вашего приложения и гистограмму его недавнего влияния (рисунок 1-1).


Когда пользователи взаимодействуют с Вашим приложением, оно должно оказать низкоэнергетическое влияние. Когда пользователи не взаимодействуют с Вашим приложением, оно должно оказать нулевое энергетическое влияние.
Любые исключения должны находиться под контролем пользователя. Если пользователь инициирует большой рендеринг iMovie, пакетное задание Automator, преобразование Компрессора, он или компиляция XCode, пользователь не должен быть удивлен, использует ли задание питание. Важный момент должен устранить неожиданности.
Запланируйте свою работу соответственно. Это применяется ко всем компонентам на всех платформах, особенно CPU на компьютерах Mac и радио на устройствах на iOS. Ваше приложение будет расходовать меньше энергии путем соблюдения пяти ключевых правил:
Ваше приложение должно быть абсолютно неактивным если не в использовании. Останьтесь неактивными максимально долго. Выход, неактивный только, когда существует работа, чтобы сделать, прежде всего в ответ на ввод данных пользователем.
Устраните работу «не пользователь, управляемый», и ожидайте ввода данных пользователем. Не опрашивайте относительно изменений состояния, не рисуйте на экран, когда пользователь не видит Ваше окно и не выполняет интенсивные питанием, дискреционные операции, когда система работает на заряде батареи.
Когда пользователь запрашивает действие, Ваше приложение должно использовать эффективные, многопоточные алгоритмы. Параллелизм обычно помогает сохранить питание; два ядра, работающие в течение половины времени, расходуют меньше энергии, потому что система бодрствуется в течение половины времени.
Если необходимо использовать таймеры, позволить гибкость в их синхронизации, таким образом, они могут выполниться, когда уже бодрствует система.
После завершения запроса пользователя Ваше приложение должно мчаться назад к состоянию ожидания нулевой мощности.
Определение, сколько CPU использование приложения
Из всех использующих питание систем, которые имеет портативный компьютер, CPU имеет безусловно самый большой потенциал для сбережений. Фактически, Ваше приложение может увеличиться или уменьшиться, питание привлекают батарею существенно, в зависимости от того, какой процент CPU это использует.
Если пользователь запускает Ваше приложение в неактивной системе, и Ваше приложение использует 1 процент CPU, Ваше приложение внезапно увеличивается, питание привлекают батарею на 10 процентов. Если Ваше приложение использует 10 процентов CPU, это рисует дважды питание неактивной системы. При использовании 100 процентов CPU Ваше приложение рисует десять раз питание неактивной системы.
При разработке и тестировании приложения, у Вас есть три инструмента, которые могут помочь Вам определить, сколько CPU использует Ваше приложение: энергетическая область в утилите Activity Monitor, прибор CPU в XCode отлаживает навигатора и инструмент Профилировщика Времени в утилите Instruments.
Монитор действия. Для наблюдения сколько из CPU использование приложения запустите его с выполнением утилиты Activity Monitor. Нажмите энергетическую кнопку в Мониторе Действия и просмотрите состояние своего приложения в столбце CPU %, как показано на рисунке 1-2. (Если столбец CPU % не появляется, выбирает View> Column> % CPU.), Когда Ваше приложение не активно, число в этом столбце 0.0.


Навигатор XCode. При создании и выполнении приложения в XCode, откройтесь, навигатор отладки (выберите View> Navigators> Show Debug Navigator). Выберите прибор CPU. Навигатор отладки выводит на экран прибор иглы текущего использования CPU Вашего приложения и график его недавнего использования, как показано на рисунке 1-3.

Профилировщик времени. Для выполнения более глубокого анализа производительности приложения нажмите кнопку «Profile in Instruments». Инструментальное приложение запускает и выполняет инструмент Профилировщика Времени. Этот инструмент получает информацию трассировки стека в предписанных интервалах при отображении временной шкалы процента используемого CPU. Посмотрите рисунок 1-4.


Инструмент вершины UNIX. Инструмент командной строки UNIX top также сообщает информацию использования CPU. Это может быть полезно, если Вы уже работаете в режиме командной строки или если Вы создаете контролирующие сценарии.
$ top -pid 68041 |
PID COMMAND %CPU |
68041 Adventure 18.1 |
Сокращение использования CPU
Если какой-либо из вышеупомянутых инструментов указывает, что Ваше приложение делает злоупотребление CPU, особенно когда Вы ожидаете, что Ваше приложение будет неактивно, идентифицирует и фиксирует причину. В частности когда Ваше приложение неактивно, оно не должно предъявлять требования к CPU.
Обратитесь к остающимся главам в этом документе:
Если Ваше приложение могло бы сделать несоответствующее или неэффективное использование таймеров, посмотрите Используя Таймеры Рассудительно.
Если Ваше приложение выполняет работу, когда пользователь не взаимодействует с ним, посмотрите Расширяющееся Выполнение Дремоты и Задержки Приложения Дискреционных Задач.
Если Ваше приложение может использовать неэффективные алгоритмы, посмотрите Пишущий Эффективный Код.