Unity 6.3
0 онлайн 20 гостей 3 в системе
Вход

Измерение производительности с помощью встроенного профилера

Примечание: Внутренний профайлер объявлен устаревшим и будет убран в одной из будущих версий Unity. Используйте Окно Profiler вместо (меню: Окно > Анализ > Profiler) См. Сбор данных о производительности на устройстве iOS для дополнительной информации о том, как профилировать устройства iOS.

Unity содержит встроенный профилер для iOS, чтобы предоставить представление о том, как работает приложение. Каждые 30 кадров встроенный профилер отправляет сообщения консоли из приложения, запущенного на устройстве, чтобы помочь определить, связано ли оно с CPU или GPU. Если ваше приложение связано с CPU, вы можете определить, является ли причиной узкого места скриптовый код или сбор мусора.

Вот пример вывода встроенного профилера:

iPhone Unity internal profiler stats
frametime>     min: 32.5   max: 34.1   avg: 33.3
cpu-player>    min:  2.2   max:  4.4   avg:  3.7
batches>       min:   3    max:   3    avg:   3
draw calls>    min:   3    max:   3    avg:   3
tris>          min:  1704  max:  1704  avg:  1704
verts>         min:  5088  max:  5088  avg:  5088
dynamic batching> batched draw calls:   0 batches:   0 tris:     0 verts:     0
static batching>  batched draw calls:   0 batches:   0 tris:     0 verts:     0
player-detail> physx:  0.0 animation:  0.0 culling  0.0 skinning:  0.0 batching:  0.0 render:  0.0 fixed-update-count: 0 .. 0
scripting-scripts>  update:  0.0   fixedUpdate:  0.0 coroutines:  0.0 
scripting-memory>   information not available on non-development player configuration

Все время измеряется в миллисекундах на кадр. Вы можете проверить минимальное, максимальное и среднее время за последние тридцать кадров.

Общая деятельность CPU

Свойство Функция
cpu-плеер Отображает время, затраченное приложением на выполнение кода в движке Unity и на выполнение скриптов в CPU..
cpu-ogles-drv (Android только) Показывает время выполнения кода драйвера OpenGL ES на CPU. На эту статистику влияет ряд факторов: количество вызовов отрисовки, число внутренних смен состояния рендеринга, настройка конвейера рендеринга и количество обработанных вершин.
cpu-present (Android только) Количество времени, потраченное на выполнение команды presentRenderbuffer в OpenGL ES.
время кадра Представляет общее время кадра приложения. Обратите внимание, что оборудование iOS заблокировано на частоте обновления 60 Гц, поэтому это свойство всегда возвращает время, кратное 16,7 мс (1000 мс/60 Гц = 16,7 мс).

Статистика отображения

Свойство Функция
три # Общее число треугольников, отправленных для отображения.
зеленые # Общее число вершин, отправленных на отрисовку. Если приложение использует только статическую геометрию, старайтесь держать это число ниже 10000. Если в приложении много экземпляров скиннинговой геометрии, значение должно быть существенно меньше.
dynamic/static batching Число рисунков, треугольников и вершин, которые движок автоматически выделил в пакет. Сравнение этих чисел с общим числом рисунков и треугольников может дать вам представление о том, насколько хорошо ваша сцена подготовлена для выделения в пакет. Распределяйте как можно больше материалов между объектами, чтобы улучшить выделение в пакет.

Подробная статистика игрока Unity

Раздел player-detail предоставляет подробную разбивку того, что происходит внутри двигателя:

Свойство Функция
Фикс Время, затраченное на физику.
анимация Время, потраченное на анимацию костей.
ликвидация Время, потраченное на уборку объектов за пределами камеры frustum.
skinning Время, затраченное на применение анимации к мешам со скинами.
дозирование Время, затраченное на пакетирование геометрии. Пакетирование динамической геометрии заметно ресурсоёмче, чем статической.
рендер Время отображения видимых объектов.
fixed-update-count Минимальное и максимальное количество FixedUpdates, выполненных в течение этого кадра. Слишком много FixedUpdates значительно ухудшит производительность.

Подробная статистика скриптов

Раздел scripting-scripts предоставляет подробную разбивку времени, потраченного на выполнение кода во время выполнения Mono:

Свойство Функция
обновление Общее время, затраченное на выполнение всех методов Update() в скриптах.
fixedUpdate Общее время, затраченное на выполнение всех методов FixedUpdate() в скриптах.
сопроцедуры Время, затраченное внутри сопутствующих программ скрипта.

Подробная статистика памяти, выделяемой скриптами

Раздел scripting-memory дает вам представление о том, как память управляется сборщиком мусора Mono:

Свойство: Функция:
выделенная куча Общий объем памяти, доступной для выделений. Сбор мусора запускается, если в куче не осталось достаточно памяти для данного выделения. Если это не высвободит достаточно памяти, выделенный куча будет расти в размере.
использованная куча Часть выделенная куча которая сейчас занята объектами. Каждый раз, когда вы создаёте новый экземпляр класса (а не структуры), это число растёт до следующей сборки мусора.
максимальное количество коллекций Количество проходов сбора мусора за последние 30 кадров.
Общая продолжительность сбора Общее время (в миллисекундах) всех проходов сбора мусора, которые произошли за последние 30 кадров.

Конфигурация

На iOS внутренний профайлер по умолчанию отключён. Чтобы включить его, воспользуйтесь одним из следующих способов.

Проект Xcode

Чтобы включить внутренний профайлер из проекта Xcode, выполните следующие шаги:

  1. Откройте проект Xcode, созданный Unity,
  2. Выберите файл InternalProfiler.h.
  3. Обновить следующую строку из:
#define ENABLE_INTERNAL_PROFILER 0

до

#define ENABLE_INTERNAL_PROFILER 1

Настройки плеера

Чтобы включить внутренний профайлер в Unity, выполните следующие шаги:

  1. В главном меню перейдите в Изменить > Project Настройки > Настройки игрока > iOS.
  2. В разделе Отладка и отчеты о сбоях включите Включить внутреннюю Profiler (Устаревшую).

Примечание: Обеспечить, чтобы Разработка Build опция включена Настройки платформы раздела бюджета Создание профилей окно при создании приложения.

Отображение консоли

Чтобы отобразить консоль вывода, в Xcode выберите Вид > Debug Area > Activate Console и запустите свой проект. Unity выводит статистику в окно консоли каждые 30 кадров.