Unity 6.3
0 онлайн 96 гостей 3 в системе
Вход
Оптимизация Шаг 36 из 208

CPU Использование Profiler Введение модуля

Получите обзор того, где ваше приложение тратит время с помощью модуля CPU Profiler.

Модуль CPU Usage Profiler предоставляет обзор областей, в которых ваше приложение тратит время, таких как рендеринг, его скрипты и анимация. Он отображает эту информацию в диаграмме в верхней части окна. Вы можете выбрать отдельные кадры, чтобы проверить данные на графике, или различные иерархические представления в панели деталей в нижней половине окна Profiler.

Мнения

Модуль CPU Использование Profiler отображает данные профилирования в виде графика или в виде различных иерархических представлений. Доступны следующие представления:

  • Timeline: Отображает образцы в графике временной шкалы, который показывает взаимосвязь между маркерами на разных потоках.
  • Hierarchy: Отображает образцы, сгруппированные по их стеку вызова и маркеру.
  • Inverted Hierarchy: Отображение образцов, сгруппированных по их маркировке в перевернутых стеках образцов.
  • Raw Hierarchy: Отображает образцы без группировки.

Чтобы изменить вид, используйте раскрывающийся селектор представления в нижней половине Profiler окно.

Окно Profiler с рамкой в выбранном модуле CPU Использование Profiler. Представление Timeline выбрано в панели деталей.
Окно Profiler с рамкой в выбранном модуле CPU Использование Profiler. Представление Timeline выбрано в панели деталей.

Timeline вид

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

Используйте представление Timeline, чтобы понять, как действия в разных потоках соотносятся друг с другом при параллельном выполнении. В Timeline также показано, насколько активно приложение использует различные потоки, например рабочие потоки системы заданий. Кроме того, представление показывает порядок постановки работы в очереди потоков и указывает, простаивает ли какой-либо поток (выборка Idle) либо ожидает завершения другого потока или задания (выборка Wait for x).

Hierarchy просмотров

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

В представлении Hierarchy перечислены все профилировавшиеся сэмплы, сгруппированные по общему стеку вызовов и иерархии маркеров Profiler. Представление Raw Hierarchy не группирует сэмплы, поэтому оно идеально подходит для их детального анализа.

Представление Inverted Hierarchy группирует образцы по маркера профиля и отображает их с инвертированными стеками образцов. На первом уровне иерархии показан элемент для каждого маркера профиля. Каждый дочерний элемент в дереве представляет собой часть инвертированного стека образцов, и его данные показывают, сколько времени или памяти кучи было вложено через этот стек образцов в агрегированный родительский элемент.

Представление Inverted Hierarchy полезно для выявления более крупных проблем производительности, вызванных большим количеством экземпляров с небольшим влиянием на производительность. Такие проблемы могут быть труднее обнаружить в представлениях Timeline или представлениях без инверсной иерархии.

Исследование управляемых стеков и распределений кодовых вызовов

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

Стек образцов отличается от стеков вызовов методов тем, что Unity не связывает каждый образец с конкретным методом и не записывает каждый вызов как образец. Глубокий профилинг добавляет маркеры профилирования к каждому вызову функции, но не добавляет их для собственного кода, и запись этих образцов сопряжена с большими накладными расходами.

Вы можете использовать модуль CPU Usage Profiler для проверки полных стеков вызовов для образцов, которые GC.Alloc, UnsafeUtility.Mallocи JobHandle.Complete выдают. Это полезно, если вы хотите проследить, где происходили эти образцы, не включая глубокое профилирование и не сталкиваясь с его высокой накладной стоимостью. Информацию о том, как включить стеки вызовов, см. в Включить полные стеки вызовов.

Расследование управляемых ассигнований

Вы также можете использовать CPU Использование Profiler, чтобы выяснить, где Unity выполнил очистку памяти.

Всякий раз, когда ваш код создает новый управляемый объект, существует вероятность, что он не поместится в текущий кучу памяти и Unity выполняет сборка мусора. Сборка мусора приостанавливает все потоки и сканирует управляемую кучу в поисках неиспользуемой памяти. Этот процесс может занять много времени и нарушить частоту кадров. Управляемая сборка мусора отображается как GC.Collect образцы в Profiler, в то время как управляемые распределения появляются как GC.Alloc.

Чтобы не допустить влияния сборщика мусора на частоту кадров приложения, постарайтесь держать значение GC.Alloc на нуле во время работы приложения и сохранять размер кучи небольшим. В представлении Timeline образцы, GC.Alloc окрашены красно-пурпурным цветом и представляют размер выделения.

Чтобы узнать, где в коде происходят управляемые выделения, можно включить полные стеки вызовов для GC.Alloc. Дополнительные сведения об управляемом куче см. в документации по Управляемая память.

Дополнительные ресурсы