ProfilerRecorder
структура в Unity.Profiling
Выполнено в:UnityEngine.CoreModule
Описание
Записывает метрические данные Profiler, которые генерирует маркер или счетчик Profiler.
Используйте ProfilerRecorder для получения доступа к показателям производительности, которые показывает Profiler. Вы можете использовать его для чтения данных счетчика Profiler, таких как статистика памяти или отображения, и данных времени маркеров Profiler единообразным образом.
Этот API можно использовать в сборках редактора и проигрывателя, включая Release Players. Используйте ProfilerRecorderHandle.GetAvailable для получения полного списка поддерживаемых показателей. Список доступных встроенных маркеров и счетчиков Profiler см. в Profiler ссылка на маркеры и ссылка на счетчики Profiler.
В следующем примере показано, как можно использовать ProfilerRecorder для получения статистики памяти и времени.
using System.Collections.Generic; using System.Text; using Unity.Profiling; using UnityEngine;
public class ExampleScript : MonoBehaviour { string statsText; ProfilerRecorder systemMemoryRecorder; ProfilerRecorder gcMemoryRecorder; ProfilerRecorder mainThreadTimeRecorder;
static double GetRecorderFrameAverage(ProfilerRecorder recorder) { var samplesCount = recorder.Capacity; if (samplesCount == 0) return 0;
double r = 0; unsafe { var samples = stackalloc ProfilerRecorderSample[samplesCount]; recorder.CopyTo(samples, samplesCount); for (var i = 0; i < samplesCount; ++i) r += samples[i].Value; r /= samplesCount; }
return r; }
void OnEnable() { systemMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "System Used Memory"); gcMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "GC Reserved Memory"); mainThreadTimeRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Internal, "Main Thread", 15); }
void OnDisable() { systemMemoryRecorder.Dispose(); gcMemoryRecorder.Dispose(); mainThreadTimeRecorder.Dispose(); }
void Update() { var sb = new StringBuilder(500); sb.AppendLine($"Frame Time: {GetRecorderFrameAverage(mainThreadTimeRecorder) * (1e-6f):F1} ms"); sb.AppendLine($"GC Memory: {gcMemoryRecorder.LastValue / (1024 * 1024)} MB"); sb.AppendLine($"System Memory: {systemMemoryRecorder.LastValue / (1024 * 1024)} MB"); statsText = sb.ToString(); }
void OnGUI() { GUI.TextArea(new Rect(10, 30, 250, 50), statsText); } }
Примечание:
ProfilerRecorder выделяет неуправляемые ресурсы и реализует интерфейс IDisposable. Используйте Dispose освободить ресурсы, когда вам больше не нужно вести статистику.
ProfilerRecorder предоставляет доступ к Unity метрика в двух режимах: немедленный доступ к значению счетчика, и значение счетчика, когда кадр заканчивается. Дополнительные ресурсы: CurrentValue, LastValue, GetSample, ProfilerRecorderHandle.GetAvailable.
Свойства
| Свойство | Описание |
|---|---|
| Capacity | Максимальное количество образцов, которые может захватить ProfilerRecorder. |
| Count | Собранные пробы считаются. |
| CurrentValue | Получает текущее значение метрики Profiler. |
| CurrentValueAsDouble | Получает текущее значение метрики Profiler как двойное значение. |
| DataType | Тип данных значения метрики Profiler. |
| IsRunning | Указывает, прикреплен ли ProfilerRecorder к метрике Profiler. |
| LastValue | Получает последнее значение, собранное ProfilerRecorder. |
| LastValueAsDouble | Получает последнее значение, собранное ProfilerRecorder как двойное. |
| UnitType | Тип единицы. |
| Valid | Указывает, связан ли ProfilerRecorder с действительным маркером или счетчиком Profiler. |
| WrappedAround | Показывает, если мощность ProfilerRecorder была превышена. |
Конструкторы
| Конструктор | Описание |
|---|---|
| ProfilerRecorder | Создает экземпляр ProfilerRecorder с именем метрики и категорией Profiler. |
Открытые методы
| Метод | Описание |
|---|---|
| CopyTo | Копирует собранные образцы в массив назначения. |
| Dispose | Выпускает неуправляемый экземпляр ProfilerRecorder. |
| GetSample | Получение образцовых данных. |
| Reset | Остановка сбора данных и удаление собранных образцов. |
| Start | Начать сбор данных. |
| Stop | Остановка сбора данных. |
| ToArray | Используется для преобразования собранных образцов в массив. |
Статические методы
| Метод | Описание |
|---|---|
| StartNew | Инициализация нового экземпляра ProfilerRecorder и начало сбора данных. |