Измерение производительности получения

Устранение ненужного получения может существенно улучшить производительность любого приложения. Рисующие вызовы требуют большого количества издержек, и в установке среды получения и в рендеринге заключительного изображения. Инструменты XCode CD идут с инструментами для анализа производительности кода для прорисовки Вашего приложения. Можно использовать эти инструменты для идентификации областей, перерисовывающихся излишне.

Используя кварцевую отладку

Кварцевая Отладка является приложением Какао, позволяющим Вам просмотреть экранные обновления, как они происходят. Приложение расположено в /Developer/Applications/Performance Tools каталог. После запускающейся Кварцевой Отладки Вам дарят окно опций, показанное на рисунке 1. Это окно содержит несколько флажков отладки (все первоначально невыбранные) и Кнопка раскрытия списка Витрины.

  Кварцевое окно Параметров отладки рисунка 1
Quartz Debug options window

Просмотр обновлений окна

Флажок «Autoflush drawing» заставляет сервер окна сбрасывать содержание Базового Графического графического контекста после каждой операции рисования.

Когда “обновления экрана Flash” выбран, области экрана, собирающиеся быть обновленными, красятся желтыми, сопровождаемыми краткой паузой, сопровождаемой фактическим экранным обновлением. Точно так же области, собирающиеся быть обновленными через аппаратное ускорение, красятся зелеными. Это позволяет Вам видеть экранные обновления, как они происходят. Пауза позволяет Вам видеть цветную область, прежде чем это исчезнет; без него экран был бы сразу обновлен, возможно быстрее, чем можно чувствовать его. Для выключения паузы включите флажок «No delay after flash».

Когда “Flash идентичные обновления” выбраны, области экрана, измененные, но чьи пиксели не изменялись, красятся красными, сопровождаемыми краткой паузой, сопровождаемой обновлением. Для выключения паузы включите флажок «No delay after flash».

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

Просмотр списка окна

Выберите Tools> Show Window List для отображения статического снимка списка окна в масштабе всей системы. Список идентифицирует владельца каждого окна и памяти, которую занимает окно. Это полезно для понимания влияния буферизированных окон на объеме потребляемой памяти Вашего приложения.

Таблица 1 объясняет значение каждого столбца в списке окна.

  Окно Table 1 QuartzDebug перечисляет столбцы

Столбец

Описание

CID

Соединение ID окна. Используемый внутренне сервером окна. Как правило, соединение ID является тем же для всех окон, принадлежавших процессу.

Application

Имя приложения, которому принадлежит окно.

WID

ID самого окна.

kBytes

Объем памяти, занятый буфером окна и другими большими структурами данных. Указанный в килобайтах. Буква I если буфер недопустим (нуждающийся в обновлении), добавляется к размеру. Буква C если окно было сжато автоматически сервером окна, добавляется. Буква A если окно ускоряется, добавляется.

Origin

Относительное экраном расположение верхнего левого угла окна, измеренного в пикселях.

Size

Размерности ширины и высоты окна, измеренного в пикселях.

Type

Buffered окна буферизуются в общей памяти. Все графические операции зарегистрированы в отступающем буфере и нарисованы для экранирования сервером окна по мере необходимости.

Только части a Retained окно, которые затенены другими окнами, сохраняется в буфере. Это приводит к некоторым сбережениям памяти, но отключает полупрозрачность.

Графические операции в NonRetained окна не зарегистрированы вообще.

Encoding

Глубина буфера окна (число бит на пиксель). Буква A если буфер окна имеет альфа-канал, добавляется. Обратите внимание на то, что буфер окна включает строку заголовка и кадр окна.

OnScreen

Yes если окно в настоящее время видимо; иначе No.

Shared

Yes если в настоящее время совместно используется окно; иначе No. Совместно используемыми окнами могут управлять многократные приложения. Несовместно используемое окно может быть изменено только приложением, которому принадлежит оно.

Fade

Непрозрачность окна. Непрозрачность является отдельной от альфа-канала окна. Диапазоны от 0% до 100%, где 0% указывает абсолютно прозрачное окно; 100% указывают абсолютно непрозрачное окно.

Level

Уровень окна. Windows в более высоких уровнях никогда не может помещаться визуально ниже окон на более низких уровнях. Значения от LONG_MIN + 1 к LONG_MAX - 16 поддерживаются.

Просмотр дополнительной информации

Меню Quartz Debug Tools включает дополнительные опции для тестирования производительности Вашего приложения. Из этого меню можно просмотреть метр кадра, выводящий на экран текущую скорость рендеринга системы, вместе с влиянием на использование CPU. Можно также вывести на экран окно управления для получения и установки текущего разрешения экрана. Можно использовать это последнее окно для тестирования независимого от разрешения кода рендеринга.

Отладка графики какао

Можно использовать в своих интересах несколько параметров отладки AppKit для сбора данных вокруг производительности получения их приложения. Эти опции находятся в форме параметров командной строки, которые Вы передаете своему приложению во время запуска. Необходимо запустить приложение от Терминала для использования этих параметров.

Таблица 2 перечисляет параметры, которые можно использовать при запуске приложения.

Табличное 2  приложение Какао, отлаживая параметры

Параметр

Описание

-NSAllWindowsRetained<ДА | НЕ>

Набор к YES сохранить все окна.

-NSShowAllDrawing<msec>

Пауза для конкретного количества миллисекунд между каждой командой рисования.

-NSShowAllDrawingColor<цвет |cycle>

Окрашивает область для незаконченных операций рисования с указанным цветом. Используйте методы класса NSColor указать требуемый цвет. Для циклического повторения через доступные цвета укажите значение cycle.

Например, для отображения обновлений получения, для приложения TextEdit с помощью цветного синего, и приостанавливаясь для 500 миллисекунд между обновлениями, Вы указали бы следующие команды от Терминала:

% cd /Applications/TextEdit.app/Contents/MacOS
% ./TextEdit -NSShowAllDrawing 500 -NSShowAllDrawingColor blueColor