# Read frame timing data with ProfilerRecorder

> Get frame time data using the ProfilerRecorder instead of the FrameTimingManager API.

You can use the [`ProfilerRecorder`](/engine/6000.5/script-reference/unity/profiling/profilerrecorder.md) API to get custom and built-in Profiler counter values, and to read `FrameTimingManager` values.

The benefit of this is that when you use the `ProfilerRecorder` API, `FrameTimingManager` only records values when you attach a recorder to a specific counter. This behavior enables you to control which counters collect data and reduces the impact that the `FrameTimingManager` has on performance.

The following example tracks only the CPU Main Thread Frame Time variable with the `ProfilerRecorder` API:

```lang-cs
using Unity.Profiling;
using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    ProfilerRecorder mainThreadTimeRecorder;

    void OnEnable()
    {
        mainThreadTimeRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Internal, "CPU Main Thread Frame Time");
    }

    void OnDisable()
    {
        mainThreadTimeRecorder.Dispose();
    }

    void Update()
    {
        var frameTime = mainThreadTimeRecorder.LastValue;

        // Your code logic here
    }
}
```

## Additional resources

* [Get frame timing data](/engine/6000.5/manual/analysis/graphics-performance-profiling/profile-rendering/frame-timing-manager/get-timing-data.md)
* [Adding profiling information to your code](/engine/6000.5/manual/analysis/profiler/customizing/adding-information-code.md)
