# ProfilerRecorderDescription

> Gets the description of a Profiler metric.

## Definition

* **Type:** Struct
* **Namespace:** [Unity.Profiling.LowLevel.Unsafe](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public readonly struct ProfilerRecorderDescription
```

## Remarks

Provides information about Profiler metrics that are accessible with the [ProfilerRecorder](/engine/6000.6/script-reference/unity/profiling/profilerrecorder.md). Use [ProfilerRecorderDescription.Name](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe/profilerrecorderdescription/name.md) and [ProfilerRecorderDescription.Category](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe/profilerrecorderdescription/category.md) to create an instance of [ProfilerRecorder](/engine/6000.6/script-reference/unity/profiling/profilerrecorder.md).

## Examples

```csharp
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using Unity.Profiling;
using Unity.Profiling.LowLevel.Unsafe;

public class Example
{
    struct StatInfo
    {
        public ProfilerCategory Cat;
        public string Name;
        public ProfilerMarkerDataUnit Unit;
    }

    static unsafe void EnumerateProfilerStats()
    {
        var availableStatHandles = new List<ProfilerRecorderHandle>();
        ProfilerRecorderHandle.GetAvailable(availableStatHandles);

        var availableStats = new List<StatInfo>(availableStatHandles.Count);
        foreach (var h in availableStatHandles)
        {
            var statDesc = ProfilerRecorderHandle.GetDescription(h);
            var statInfo = new StatInfo()
            {
                Cat = statDesc.Category,
                Name = statDesc.Name,
                Unit = statDesc.UnitType
            };
            availableStats.Add(statInfo);
        }
        availableStats.Sort((a, b) =>
        {
            var result = string.Compare(a.Cat.ToString(), b.Cat.ToString());
            if (result != 0)
                return result;

            return string.Compare(a.Name, b.Name);
        });

        var sb = new StringBuilder("Available stats:\n");
        foreach (var s in availableStats)
        {
            sb.AppendLine($"{(int)s.Cat}\t\t - {s.Name}\t\t - {s.Unit}");
        }

        Debug.Log(sb.ToString());
    }
}
```

## Properties

| Property                                                                                                                  | Description                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| [Category](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe/profilerrecorderdescription/category.md)       | Gets the [ProfilerCategory](/engine/6000.6/script-reference/unity/profiling/profilercategory.md) value of the Profiler metric. |
| [DataType](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe/profilerrecorderdescription/datatype.md)       | Gets the data value type of the Profiler metric.                                                                               |
| [Flags](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe/profilerrecorderdescription/flags.md)             | Profiler marker flags of the metric.                                                                                           |
| [Name](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe/profilerrecorderdescription/name.md)               | The name of the Profiler metric.                                                                                               |
| [NameUtf8](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe/profilerrecorderdescription/nameutf8.md)       | The name of the Profiler metric as a pointer to UTF-8 byte array.                                                              |
| [NameUtf8Len](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe/profilerrecorderdescription/nameutf8len.md) | Name length excluding null terminator.                                                                                         |
| [UnitType](/engine/6000.6/script-reference/unity/profiling/lowlevel/unsafe/profilerrecorderdescription/unittype.md)       | Gets the data unit type of the Profiler metric.                                                                                |
