reckfellENGINE

Performance

Встроенные показатели и пользовательские числовые мониторы.

На этой странице
class PerformanceReckfellSharp

GetMonitor возвращает показатель с единицами выбранного Monitor. Времена TimeProcess/TimePhysicsProcess передаются в секундах; в этой сборке основной цикл примерно раз в секунду публикует накопленные максимумы. Это не длительность текущего C#-метода.

AddCustomMonitor регистрирует Callable по глобальному ID процесса. GetCustomMonitor вызывает его синхронно. Callback должен возвращать уже подготовленное числовое значение; регистрация не измеряет операцию автоматически. Удаляйте принадлежащий вам монитор до уничтожения его получателя. Встроенные хуки профилирования отдельных C#-методов в проверенных исходниках не реализованы; мониторы не заменяют такой профилировщик.

Практическое руководство.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Свойства1

SingletonСвойство
# Singleton
C#
public static PerformanceInstance Singleton { get; }

Методы9

AddCustomMonitor2 перегрузки
# AddCustomMonitor · 1/2
C#
public static void AddCustomMonitor(StringName id, Callable callable, Reckfell.Collections.Array arguments);

Регистрирует Callable по уникальному в процессе ID. Callback возвращает подготовленное числовое значение при опросе; тип задаёт форматирование. Time принимает секунды, Memory — байты, Percentage — долю. Удалите монитор до исчезновения получателя.

Параметры
ИмяТипПо умолчанию
idStringName—
callableCallable—
argumentsReckfell.Collections.Array—
# AddCustomMonitor · 2/2
C#
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 — долю. Удалите монитор до исчезновения получателя.

Параметры
ИмяТипПо умолчанию
idStringName—
callableCallable—
argumentsReckfell.Collections.Arraynull
typePerformance.MonitorTypePerformance.MonitorType.Quantity
GetCustomMonitorVariant
# GetCustomMonitor
C#
public static Variant GetCustomMonitor(StringName id);

Синхронно вызывает Callable существующего монитора и возвращает его Variant. Это не чтение автоматически накопленной истории; проверяйте HasCustomMonitor для потенциально удалённого ID.

Параметры
ИмяТипПо умолчанию
idStringName—
Возвращает Variant
GetCustomMonitorNamesReckfell.Collections.Array<StringName>
# GetCustomMonitorNames
C#
public static Reckfell.Collections.Array<StringName> GetCustomMonitorNames();

Возвращает имена активных пользовательских мониторов в Reckfell.Collections.Array.

Возвращает Reckfell.Collections.Array<StringName>
GetCustomMonitorTypesint[]
# GetCustomMonitorTypes
C#
public static int[] GetCustomMonitorTypes();

Возвращает значения Performance.MonitorType активных пользовательских мониторов в Reckfell.Collections.Array.

Возвращает int[]
GetMonitordouble
# GetMonitor
C#
public static double GetMonitor(Performance.Monitor monitor);

Возвращает встроенный показатель в его единицах. TimeProcess/TimePhysicsProcess — секунды периодически публикуемых максимумов, а не текущий C# callback; для миллисекунд умножьте на 1000.

Параметры
ИмяТипПо умолчанию
monitorPerformance.Monitor—
Возвращает double
GetMonitorModificationTimeulong
# GetMonitorModificationTime
C#
public static ulong GetMonitorModificationTime();

Возвращает последний тик, в течение которого пользовательский монитор был добавлен/удален (в микросекундах с момента запуска движка). При обновлении монитора устанавливается значение Time.GetTicksUsec.

Возвращает ulong
HasCustomMonitorbool
# HasCustomMonitor
C#
public static bool HasCustomMonitor(StringName id);

Проверяет текущую регистрацию ID. Сам по себе этот вызов не защищает последующий доступ от изменения регистрации в другом потоке; управляйте мониторами в одном согласованном потоке.

Параметры
ИмяТипПо умолчанию
idStringName—
Возвращает bool
RemoveCustomMonitorvoid
# RemoveCustomMonitor
C#
public static void RemoveCustomMonitor(StringName id);

Удаляет существующий ID из реестра. Удаляйте только принадлежащие компоненту мониторы до освобождения захваченного получателя Callable.

Параметры
ИмяТипПо умолчанию
idStringName—

Performance.Monitor

ЗначениеОписание
AudioOutputLatency = 23

Задержка вывода AudioServer. Эквивалентно вызову AudioServer.GetOutputLatency, не рекомендуется вызывать его каждый кадр.

MemoryMessageBufferMax = 6

Наибольший объем памяти, который буфер очереди сообщений использовал, в байтах. Очередь сообщений используется для отложенных вызовов функций и уведомлений. Чем меньше, тем лучше.

MemoryStatic = 4

Статическая память, используемая в настоящее время, в байтах. Недоступно в сборках релиза. Чем меньше, тем лучше.

Мемориал_СТАТИЧЕСКИХ_МАКС

MemoryStaticMax = 5

Доступная статическая память. Недоступно в релизных сборках. Чем меньше, тем лучше.

MonitorMax = 60

Представляет размер перечисления Performance.Monitor.

МОНИТОРИНГ_ТИПЕ_КОЛИЧЕСТВО

Navigation2DActiveMaps = 39

Количество активных навигационных карт в NavigationServer2D. Сюда также входят пустые навигационные карты по умолчанию, созданные экземплярами World2D.

Navigation2DAgentCount = 41

Количество активных навигационных агентов, обрабатывающих избегание в NavigationServer2D.

Navigation2DEdgeConnectionCount = 46

Количество ребер полигона, которые считаются соединенными по близости ребер NavigationServer2D.

Navigation2DEdgeCount = 44

Количество ребер полигонов навигационной сетки в NavigationServer2D.

Navigation2DEdgeFreeCount = 47

Количество ребер полигонов навигационной сетки, которые не удалось объединить в NavigationServer2D. Ребра по-прежнему могут быть соединены близостью ребер или ссылками.

Navigation2DEdgeMergeCount = 45

Количество ребер полигонов навигационной сетки, которые были объединены из-за перекрытия ключей ребер в NavigationServer2D.

Navigation2DLinkCount = 42

Количество активных навигационных ссылок в NavigationServer2D.

Navigation2DObstacleCount = 48

Количество активных навигационных препятствий в NavigationServer2D.

Navigation2DPolygonCount = 43

Количество полигонов навигационной сетки в NavigationServer2D.

Navigation2DRegionCount = 40

Количество активных навигационных регионов в NavigationServer2D.

Navigation3DActiveMaps = 49

Количество активных навигационных карт в NavigationServer3D. Сюда также входят пустые навигационные карты по умолчанию, созданные экземплярами World3D.

Navigation3DAgentCount = 51

Количество активных навигационных агентов, обрабатывающих избегание в NavigationServer3D.

Navigation3DEdgeConnectionCount = 56

Количество ребер полигона, которые считаются соединенными по близости ребер NavigationServer3D.

Navigation3DEdgeCount = 54

Количество ребер полигонов навигационной сетки в NavigationServer3D.

Navigation3DEdgeFreeCount = 57

Количество ребер полигонов навигационной сетки, которые не удалось объединить в NavigationServer3D. Ребра по-прежнему могут быть соединены близостью ребер или связями.

Navigation3DEdgeMergeCount = 55

Количество ребер полигонов навигационной сетки, которые были объединены из-за перекрытия ключей ребер в NavigationServer3D.

Navigation3DLinkCount = 52

Количество активных навигационных ссылок в NavigationServer3D.

Navigation3DObstacleCount = 58

Количество активных навигационных препятствий в NavigationServer3D.

Navigation3DPolygonCount = 53

Количество полигонов навигационной сетки в NavigationServer3D.

Navigation3DRegionCount = 50

Количество активных навигационных регионов в NavigationServer3D.

NavigationActiveMaps = 24

Количество активных навигационных карт в NavigationServer2D и NavigationServer3D. Сюда также входят пустые навигационные карты по умолчанию, созданные экземплярами World2D и World3D.

NavigationAgentCount = 26

Количество активных навигационных агентов, обрабатывающих избегание в NavigationServer2D и NavigationServer3D.

NavigationEdgeConnectionCount = 31

Количество ребер полигона, которые считаются соединенными по близости ребер NavigationServer2D и NavigationServer3D.

NavigationEdgeCount = 29

Количество ребер полигонов навигационной сетки в NavigationServer2D и NavigationServer3D.

NavigationEdgeFreeCount = 32

Количество ребер полигонов навигационной сетки, которые не удалось объединить в NavigationServer2D и NavigationServer3D. Ребра по-прежнему могут быть соединены близостью ребер или связями (Link).

NavigationEdgeMergeCount = 30

Количество ребер полигонов навигационной сетки, которые были объединены из-за перекрытия ключей ребер в NavigationServer2D и NavigationServer3D.

NavigationLinkCount = 27

Количество активных навигационных ссылок (link) в NavigationServer2D и NavigationServer3D.

NavigationObstacleCount = 33

Количество активных навигационных препятствий в NavigationServer2D и NavigationServer3D.

NavigationPolygonCount = 28

Количество полигонов навигационной сетки в NavigationServer2D и NavigationServer3D.

NavigationRegionCount = 25

Количество активных навигационных регионов в NavigationServer2D и NavigationServer3D.

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

Количество активных узлов RigidBody2D в игре. Чем меньше, тем лучше.

Physics2DCollisionPairs = 18

Количество пар столкновений в 2D физическом движке. Чем меньше, тем лучше.

Physics2DIslandCount = 19

Количество островов в 2D физическом движке. Чем меньше, тем лучше.

Physics3DActiveObjects = 20

Количество активных узлов RigidBody3D и VehicleBody3D в игре. Чем меньше, тем лучше.

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

Объем используемой видеопамяти (объединенная память текстур и вершин, в байтах). Поскольку эта метрика также включает в себя различные выделения, это значение всегда больше суммы Performance.Monitor.RenderTextureMemUsed и Performance.Monitor.RenderBufferMemUsed. Чем меньше, тем лучше.

TimeFps = 0

Количество кадров, отрисованных за последнюю секунду. Эта метрика обновляется только один раз в секунду, даже если запрашивается чаще. Чем выше, тем лучше.

ВРЕМЯ

TimeNavigationProcess = 3

Time Это включает обновления навигационных карт, а также расчеты избегания агентов. * Низкое лучше.*

Мемориал_СТАТИЧЕСКИЙ

TimePhysicsProcess = 2

Time Нужно было заполнить одну физику за секунды.*

TimeProcess = 1

Time Это заняло, чтобы заполнить одну рамку за секунды.*

Performance.MonitorType

ЗначениеОписание
Memory = 1

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

Percentage = 3

Вывод монитора осуществляется в виде процентов. Представленные значения должны быть дробными, а не представлять собой процент напрямую, например, 0.5 для 50.00%.

Quantity = 0

Вывод на монитор осуществляется в формате целочисленного значения.

МОНИТОРИНГ_ТИПЕ

Time = 2

Вывод монитора форматируется как время в миллисекундах. Представленные значения должны указывать время в секундах (а не в миллисекундах).

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.