Объявление
public static void BeginSampleWithMetadata(IntPtr markerPtr, int metadataCount, void* metadata);Параметры
markerPtr | Ручка маркера профилировщика. |
metadataCount | Количество параметров метаданных. |
metadata | Небезопасный указатель на массив ProfilerMarkerData. |
Описание
Начинает профилирование фрагмента кода, помеченного пользовательским именем, определенным дескриптором markerPtr и параметрами метаданных.
Код, отмеченный BeginSampleWithMetadata и EndSample отображается в иерархии Profiler.
Всегда используйте EndSample, чтобы закрыть начатый раздел инструментированного кода.
В представлении временной шкалы окна Profiler предоставленные метаданные доступны во всплывающей подсказке.
Используйте HierarchyFrameDataView.GetItemMetadata для программного извлечения метаданных.
Примечание. И BeginSampleWithMetadata, и EndSample являются потокобезопасными и могут использоваться в рабочем коде.
Низкоуровневый Profiler API включен в сборку релиза.
using Unity.Collections.LowLevel.Unsafe;
using Unity.Profiling;
using Unity.Profiling.LowLevel;
using Unity.Profiling.LowLevel.Unsafe;
using System;
class Example
{
static IntPtr MakeMarkerWithIntMetadata(string name, string paramName)
{
var handle = ProfilerUnsafeUtility.CreateMarker(name, ProfilerUnsafeUtility.CategoryScripts, MarkerFlags.Default, 1);
ProfilerUnsafeUtility.SetMarkerMetadata(handle, 0, paramName, (byte)ProfilerMarkerDataType.Int32, (byte)ProfilerMarkerDataUnit.Count);
return handle;
}
static readonly IntPtr markerHandle = MakeMarkerWithIntMetadata("MyMarker", "Work Idx");
static unsafe void DoWork(int num)
{
var metadata = stackalloc ProfilerMarkerData[1];
metadata[0].Type = (byte)ProfilerMarkerDataType.Int32;
metadata[0].Size = (uint)UnsafeUtility.SizeOf();
metadata[0].Ptr = UnsafeUtility.AddressOf(ref num);
ProfilerUnsafeUtility.BeginSampleWithMetadata(markerHandle, 1, metadata);
//...
ProfilerUnsafeUtility.EndSample(markerHandle);
}
}
Используйте Recorder, чтобы получить в проигрывателе тайминги для каждого кадра для определенного имени маркера.
Смотрите так же: EndSample, CreateMarker, SetMarkerMetadata.