Добавление профилирующей информации в введение к коду
По умолчанию, Profiler окно отображает информацию о Unity’s собственный код. Он использует встроенные маркеры профилера для организации и разделения собираемых данных о производительности.
Вы можете добавить маркеры профилирования в свой собственный код, чтобы сделать время, потраченное в этих областях, видимым в окне Profiler с ProfilerMarker API.
Вы также можете добавить счетчики Profiler в свой код для сбора данных для метрик в вашем приложении и использовать модули пользовательского профилера для отображения этих данных. Это полезно, если вы хотите отслеживать изменения производительности в вашем приложении. Добавление счетчиков профилера в ваш код ускоряет расследование проблем производительности, потому что вы можете использовать информацию из счетчиков в сочетании со встроенными счетчиками Unity и данными инструментации.
Чтобы добавить счетчики и маркеры с метаданными в свой код, необходимо использовать пакет Unity Profiling Core.
Важно: Пакет Unity Profiling Core не обнаруживается в Package Manager UI, поскольку это пакет core. Чтобы установить пакет, добавляет его по имени, которое является com.unity.profiling.core.
Profiler маркеры
Вы можете использовать ProfilerMarker API для разметки ресурсоемких блоков кода скрипта и сделать их видимыми в Unity Profiler, или использовать ProfilerMarker<TP1> API в пакете Unity Profiling Core для добавления дополнительных метаданных к каждому образцу, который он производит.
Это может быть полезно, потому что встроенный Unity Profiler не профилирует все вызовы методов. Альтернативой является использование глубокого профилирования,, но это вызывает большую накладную, которая значительно замедляет выполнение приложения и искажает результаты. Использование ProfilerMarker является более эффективным способом разметки кода.
ProfilerMarker представляет собой названный Profiler handle и является наиболее эффективным способом профилирования вашего кода. Вы можете использовать его в любом коде C# вашего приложения.
Маркеры Profiler не имеют накладных расходов, когда Unity развертывает их в неразработочной сборке, так что вы можете помечать столько образцов, сколько хотите.
Unity помечает методы Begin и End с ConditionalAttribute и условно компилирует их, так что они имеют нулевую нагрузку на выполнение в неразработанных сборках. В то время как методы Auto не полностью компилируются в неразработанных сборках, они условно компилируются, чтобы возвращать просто null, что делает их нагрузку ничтожной. Поле маркера профилера присутствует в сборках выпуска и занимает память, эквивалентную его IntPtr, которая составляет 8 байт.
ProfilerRecorder API также использует маркеры профилирования для сбора данных о производительности. Во время разработки в Unity Editor и в Development Players вы можете использовать API для получения обзора производительности различных частей вашего кода и для выявления проблем с производительностью.
Profiler счетчики
Для отображения настраиваемых показателей в профилере Unity используйте ProfilerCounter API в пакете Unity Profiling Core. Profiler может отображать данные из ProfilerCounter или ProfilerCounterValue.
Unity группирует счетчики Profiler в категории, основанные на типе работы профиля счетчиков, например, Рендирование, Скрипты или Animation. Вы можете назначить пользовательский счетчик Profiler любой из категорий профилирования Unity. Полный список доступных категорий Profiler см. в ProfilerCategory.
Вы можете использовать ProfilerCounter или ProfilerCounterValue API для отслеживания показателей вашего приложения и сделать их видимыми в Unity Profiler или в другом коде. Если вы разработчик пакета Asset Store, вы можете добавить счетчики Profiler в свой код, чтобы помочь другим разработчикам понять важные характеристики производительности вашей системы, и они могут использовать эту информацию для инструментов оптимизации или бюджетирования.
На следующей диаграмме показан обзор потока данных счетчиков Profiler на высоком уровне:
ProfilerRecorder API получает данные счетчика Profiler в коде приложения, а RawFrameDataView или HierarchyFrameDataView APIs получает данные счетчика Profiler в коде Редактора. Вы можете визуализировать эти данные счетчика в окне Profiler, настроив пользовательский модуль Profiler в Редакторе Модулей.
ProfilerCounter и ProfilerCounterValue поддерживают следующие типы:
- инт
- длинный
- поплавок
- двойной