Version: Unity 6 Preview (6000.0)
Language : English
Enable the FrameTimingManager
Record frame timing data

Get frame timing data

View frame time data with a Custom Profiler module

To view frame timing data in a Custom ProfilerA window that helps you to optimize your game. It shows how much time is spent in the various areas of your game. For example, it can report the percentage of time spent rendering, animating, or in your game logic. More info
See in Glossary
module:

  1. Create a custom profiler module according to the instructions on Creating a custom profiler module.
  2. In the Profiler Module Editor window, select your custom module.
  3. In the Available Counters panel, select Unity.
  4. Select Render to open the submenu that contains profiler countersPlaced in code with the ProfilerCounter API to track metrics, such as the number of enemies spawned in your game. More info
    See in Glossary
    related to memory usage, which includes those that the FrameTimingStats property enables. You can then click on the relevant counters in the submenu to add them to your custom module.

The following table describes the purpose of each of the counters that become available when you enable Frame Timing Stats:

Measurement Description
CPU Total Frame Time (ms) The total CPU frame time, in milliseconds. Unity calculates this as the time between the ends of two frames, including any overheads or time spent waiting in between frames.
CPU Main Thread Frame Time (ms) The time between the start of the frame and the time when the Main Thread finished the work it performed during that frame, in milliseconds.
CPU Main Thread Present Wait Time (ms) The CPU time spent waiting for Present() during the frame.
CPU Render Thread Frame Time (ms) The time between the start of the work on the Render Thread and when Unity calls the Present() function, in milliseconds.
GPU Frame Time (ms) The time difference between the beginning and the end of the GPU rendering a single frame, in milliseconds.

Retrieve timestamp data from the FrameTimingManager C# API

Use the FrameTimingManager API to access timestamp information. In each variable, the FrameTimingManager records the time a specific event happens during a frame.

The following table shows the values available through the API, in the order that Unity executes them during a frame:

Property Description
frameStartTimestamp The CPU clock time when the frame begins.
firstSubmitTimestamp The CPU clock time when Unity submits the first job to the GPU during this frame.
cpuTimePresentCalled The CPU clock time when Unity calls the Present() function for the current frame.
cpuTimeFrameComplete The CPU clock time when the GPU finishes rendering the frame and interrupts the CPU.
Enable the FrameTimingManager
Record frame timing data