Performance
Встроенные показатели и пользовательские числовые мониторы.
GetMonitor возвращает показатель с единицами выбранного Monitor. Времена TimeProcess/TimePhysicsProcess передаются в секундах; в этой сборке основной цикл примерно раз в секунду публикует накопленные максимумы. Это не длительность текущего C#-метода.
AddCustomMonitor регистрирует Callable по глобальному ID процесса. GetCustomMonitor вызывает его синхронно. Callback должен возвращать уже подготовленное числовое значение; регистрация не измеряет операцию автоматически. Удаляйте принадлежащий вам монитор до уничтожения его получателя. Встроенные хуки профилирования отдельных C#-методов в проверенных исходниках не реализованы; мониторы не заменяют такой профилировщик.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства1
SingletonСвойство
public static PerformanceInstance Singleton { get; }Методы9
AddCustomMonitor2 перегрузки
public static void AddCustomMonitor(StringName id, Callable callable, Reckfell.Collections.Array arguments);Регистрирует Callable по уникальному в процессе ID. Callback возвращает подготовленное числовое значение при опросе; тип задаёт форматирование. Time принимает секунды, Memory — байты, Percentage — долю. Удалите монитор до исчезновения получателя.
| Имя | Тип | По умолчанию |
|---|---|---|
id | StringName | — |
callable | Callable | — |
arguments | Reckfell.Collections.Array | — |
public static void AddCustomMonitor(StringName id, Callable callable, Reckfell.Collections.Array arguments = null, Performance.MonitorType type = Performance.MonitorType.Quantity);Регистрирует Callable по уникальному в процессе ID. Callback возвращает подготовленное числовое значение при опросе; тип задаёт форматирование. Time принимает секунды, Memory — байты, Percentage — долю. Удалите монитор до исчезновения получателя.
| Имя | Тип | По умолчанию |
|---|---|---|
id | StringName | — |
callable | Callable | — |
arguments | Reckfell.Collections.Array | null |
type | Performance.MonitorType | Performance.MonitorType.Quantity |
GetCustomMonitorVariant
public static Variant GetCustomMonitor(StringName id);Синхронно вызывает Callable существующего монитора и возвращает его Variant. Это не чтение автоматически накопленной истории; проверяйте HasCustomMonitor для потенциально удалённого ID.
| Имя | Тип | По умолчанию |
|---|---|---|
id | StringName | — |
VariantGetCustomMonitorNamesReckfell.Collections.Array<StringName>
public static Reckfell.Collections.Array<StringName> GetCustomMonitorNames();Возвращает имена активных пользовательских мониторов в Reckfell.Collections.Array.
Reckfell.Collections.Array<StringName>GetCustomMonitorTypesint[]
public static int[] GetCustomMonitorTypes();Возвращает значения Performance.MonitorType активных пользовательских мониторов в Reckfell.Collections.Array.
int[]GetMonitordouble
public static double GetMonitor(Performance.Monitor monitor);Возвращает встроенный показатель в его единицах. TimeProcess/TimePhysicsProcess — секунды периодически публикуемых максимумов, а не текущий C# callback; для миллисекунд умножьте на 1000.
| Имя | Тип | По умолчанию |
|---|---|---|
monitor | Performance.Monitor | — |
doubleGetMonitorModificationTimeulong
public static ulong GetMonitorModificationTime();Возвращает последний тик, в течение которого пользовательский монитор был добавлен/удален (в микросекундах с момента запуска движка). При обновлении монитора устанавливается значение Time.GetTicksUsec.
ulongHasCustomMonitorbool
public static bool HasCustomMonitor(StringName id);Проверяет текущую регистрацию ID. Сам по себе этот вызов не защищает последующий доступ от изменения регистрации в другом потоке; управляйте мониторами в одном согласованном потоке.
| Имя | Тип | По умолчанию |
|---|---|---|
id | StringName | — |
boolRemoveCustomMonitorvoid
public static void RemoveCustomMonitor(StringName id);Удаляет существующий ID из реестра. Удаляйте только принадлежащие компоненту мониторы до освобождения захваченного получателя Callable.
| Имя | Тип | По умолчанию |
|---|---|---|
id | StringName | — |
Performance.Monitor
| Значение | Описание |
|---|---|
AudioOutputLatency = 23 | Задержка вывода |
MemoryMessageBufferMax = 6 | Наибольший объем памяти, который буфер очереди сообщений использовал, в байтах. Очередь сообщений используется для отложенных вызовов функций и уведомлений. Чем меньше, тем лучше. |
MemoryStatic = 4 | Статическая память, используемая в настоящее время, в байтах. Недоступно в сборках релиза. Чем меньше, тем лучше. Мемориал_СТАТИЧЕСКИХ_МАКС |
MemoryStaticMax = 5 | Доступная статическая память. Недоступно в релизных сборках. Чем меньше, тем лучше. |
MonitorMax = 60 | Представляет размер перечисления МОНИТОРИНГ_ТИПЕ_КОЛИЧЕСТВО |
Navigation2DActiveMaps = 39 | Количество активных навигационных карт в |
Navigation2DAgentCount = 41 | Количество активных навигационных агентов, обрабатывающих избегание в |
Navigation2DEdgeConnectionCount = 46 | Количество ребер полигона, которые считаются соединенными по близости ребер |
Navigation2DEdgeCount = 44 | Количество ребер полигонов навигационной сетки в |
Navigation2DEdgeFreeCount = 47 | Количество ребер полигонов навигационной сетки, которые не удалось объединить в |
Navigation2DEdgeMergeCount = 45 | Количество ребер полигонов навигационной сетки, которые были объединены из-за перекрытия ключей ребер в |
Navigation2DLinkCount = 42 | Количество активных навигационных ссылок в |
Navigation2DObstacleCount = 48 | Количество активных навигационных препятствий в |
Navigation2DPolygonCount = 43 | Количество полигонов навигационной сетки в |
Navigation2DRegionCount = 40 | Количество активных навигационных регионов в |
Navigation3DActiveMaps = 49 | Количество активных навигационных карт в |
Navigation3DAgentCount = 51 | Количество активных навигационных агентов, обрабатывающих избегание в |
Navigation3DEdgeConnectionCount = 56 | Количество ребер полигона, которые считаются соединенными по близости ребер |
Navigation3DEdgeCount = 54 | Количество ребер полигонов навигационной сетки в |
Navigation3DEdgeFreeCount = 57 | Количество ребер полигонов навигационной сетки, которые не удалось объединить в |
Navigation3DEdgeMergeCount = 55 | Количество ребер полигонов навигационной сетки, которые были объединены из-за перекрытия ключей ребер в |
Navigation3DLinkCount = 52 | Количество активных навигационных ссылок в |
Navigation3DObstacleCount = 58 | Количество активных навигационных препятствий в |
Navigation3DPolygonCount = 53 | Количество полигонов навигационной сетки в |
Navigation3DRegionCount = 50 | Количество активных навигационных регионов в |
NavigationActiveMaps = 24 | Количество активных навигационных карт в |
NavigationAgentCount = 26 | Количество активных навигационных агентов, обрабатывающих избегание в |
NavigationEdgeConnectionCount = 31 | Количество ребер полигона, которые считаются соединенными по близости ребер |
NavigationEdgeCount = 29 | Количество ребер полигонов навигационной сетки в |
NavigationEdgeFreeCount = 32 | Количество ребер полигонов навигационной сетки, которые не удалось объединить в |
NavigationEdgeMergeCount = 30 | Количество ребер полигонов навигационной сетки, которые были объединены из-за перекрытия ключей ребер в |
NavigationLinkCount = 27 | Количество активных навигационных ссылок (link) в |
NavigationObstacleCount = 33 | Количество активных навигационных препятствий в |
NavigationPolygonCount = 28 | Количество полигонов навигационной сетки в |
NavigationRegionCount = 25 | Количество активных навигационных регионов в |
ObjectCount = 7 | Количество нативных объектов, зарегистрированных в ObjectDB, включая Entity. Это число объектов, не байты: managed-массив C# не добавляет объект в ObjectDB, а изменение внутреннего буфера может не менять счётчик. Рост сам по себе не доказывает утечку. |
ObjectNodeCount = 9 | Количество Entity внутри текущего EntityTree, включая корень. Отсоединённая иерархия не входит в этот счётчик. Если текущий MainLoop не является EntityTree, возвращается 0. |
ObjectOrphanNodeCount = 10 | В сборке движка с DEBUG_ENABLED: общее число Entity минус число Entity внутри текущего дерева. Учитывает также детей отсоединённых корней, даже когда у детей есть родитель. Без DEBUG_ENABLED возвращает 0. Это не счётчик утечек и не объём памяти. |
ObjectResourceCount = 8 | Количество используемых в данный момент ресурсов. Чем меньше, тем лучше. |
Physics2DActiveObjects = 17 | Количество активных узлов |
Physics2DCollisionPairs = 18 | Количество пар столкновений в 2D физическом движке. Чем меньше, тем лучше. |
Physics2DIslandCount = 19 | Количество островов в 2D физическом движке. Чем меньше, тем лучше. |
Physics3DActiveObjects = 20 | Количество активных узлов |
Physics3DCollisionPairs = 21 | Количество пар столкновений в 3D физическом движке. Чем меньше, тем лучше. |
Physics3DIslandCount = 22 | Количество островов в 3D физическом движке. Чем меньше, тем лучше. Аудио ОutPUT_LATENCY |
PipelineCompilationsCanvas = 34 | Количество компиляций конвейера, которые были запущены рендерером 2D Canvas. |
PipelineCompilationsDraw = 37 | Количество компиляций конвейера, которые были запущены при отрисовке сцены. Эти компиляции будут отображаться как подтормаживания во время игрового процесса, когда пользователь впервые запускает игру и требуется конвейер. |
PipelineCompilationsMesh = 35 | Количество компиляций конвейера, которые были вызваны загрузкой сеток. Эти компиляции будут отображаться как более длительное время загрузки при первом запуске игры пользователем, и конвейер требуется. |
PipelineCompilationsSpecialization = 38 | Количество компиляций конвейера, которые были запущены для оптимизации текущей сцены. Эти компиляции выполняются в фоновом режиме и не должны вызывать никаких задержек. |
PipelineCompilationsSurface = 36 | Количество компиляций конвейера, запущенных при создании кэша поверхности перед рендерингом сцены. Эти компиляции будут проявляться в виде подтормаживаний при загрузке сцены при первом запуске игры пользователем, когда требуется конвейер. |
RenderBufferMemUsed = 16 | Объем используемой памяти буфера рендеринга (в байтах). Чем меньше, тем лучше. |
RenderStreamingTextureMemUsed = 59 | Количество памяти, используемое для трансляции текстур (в байтах). Это представляет собой текущее использование потоковых текстуров на их нынешнем загруженном мипкарте. |
RenderTextureMemUsed = 15 | Объем используемой памяти текстур (в байтах). Чем меньше, тем лучше. |
RenderTotalDrawCallsInFrame = 13 | Общее количество вызовов отрисовки, выполненных в последнем отрендеренном кадре. Эта метрика не включает отбракованные объекты (через скрытие узлов, отбраковку по усеченной пирамиде или отбраковку по окклюзии), поскольку они не приводят к вызовам отрисовки. Чем ниже, тем лучше. |
RenderTotalObjectsInFrame = 11 | Общее количество объектов в последнем отрисованном кадре. Эта метрика не включает отбракованные объекты (через скрытие узлов, отбраковку по усеченной области или отбраковку по окклюзии). Чем меньше, тем лучше. |
RenderTotalPrimitivesInFrame = 12 | Общее количество вершин или индексов, отрендеренных в последнем отрендеренном кадре. Эта метрика не включает примитивы из отбракованных объектов (через скрытие узлов, отбраковку по усеченной пирамиде или отбраковку по окклюзии). Из-за предварительного прохода глубины и проходов теней количество примитивов всегда больше фактического количества вершин в сцене (обычно вдвое или втрое больше исходного количества вершин). Чем меньше, тем лучше. |
RenderVideoMemUsed = 14 | Объем используемой видеопамяти (объединенная память текстур и вершин, в байтах). Поскольку эта метрика также включает в себя различные выделения, это значение всегда больше суммы |
TimeFps = 0 | Количество кадров, отрисованных за последнюю секунду. Эта метрика обновляется только один раз в секунду, даже если запрашивается чаще. Чем выше, тем лучше. ВРЕМЯ |
TimeNavigationProcess = 3 | Time Это включает обновления навигационных карт, а также расчеты избегания агентов. * Низкое лучше.* Мемориал_СТАТИЧЕСКИЙ |
TimePhysicsProcess = 2 | Time Нужно было заполнить одну физику за секунды.* |
TimeProcess = 1 | Time Это заняло, чтобы заполнить одну рамку за секунды.* |
Performance.MonitorType
| Значение | Описание |
|---|---|
Memory = 1 | Вывод на монитор осуществляется в формате, соответствующем памяти компьютера. Представленные значения должны представлять собой количество байтов. |
Percentage = 3 | Вывод монитора осуществляется в виде процентов. Представленные значения должны быть дробными, а не представлять собой процент напрямую, например, |
Quantity = 0 | Вывод на монитор осуществляется в формате целочисленного значения. МОНИТОРИНГ_ТИПЕ |
Time = 2 | Вывод монитора форматируется как время в миллисекундах. Представленные значения должны указывать время в секундах (а не в миллисекундах). |