10 Jun 2025

Leverage your profiling abilities with Profile Analyzer in Unity 6

sir.rob
By sir.rob

Have you ever stared at Unity Profiler trying to figure out what is really a bottom cause for performance hiccups of what you should put your efforts into in terms of optimizing your game? Or maybe you always wanted to compare two Profiler data? Profile Analyzer tool is the answer to this.

The Profile Analyzer aggregates and visualizes data from Unity’s built-in Profiler, offering insights into CPU usage, rendering times, and other performance metrics. By analyzing this data, you can pinpoint areas where the game may be underperforming and prioritize optimizations accordingly.

Let’s dive into the details!

How to get started

You can install Profile Analyzer via Window > Package Manager.

After opening the Profile Analyzer window you can see a couple of buttons. You can switch between Single and Compare mode, Export profiler data as CSV files, Pull Data from Profiler, Load or Save .pdata file (this is the data representing Profile Analyzer session).

In order to get started, first you have to capture some data with the Profiler. Once it is done, the Pull Data button in the Profile Analyzer will enable. Click it to pull the captured data from Profiler. You can also load previously saved Profiler data into the Profiler and then pull this data to the Profile Analyzer.

Once you’ve loaded your data, you’ll see it in the frame time graph. This is an interactive region – you can select a range of frames you want to analyze further.

Profile Analyzer window with selected frame region.

The analysis starts immediately, and the data populates the frame time graph. On the top you can see white and cyan bars. The white bars represent the frame durations, the cyan bars however represent the currently selected marker. This allows you to compare the selected marker’s contribution to total frame time.

Profile Analyzer window.

Filters

You can search for markers using Filters. The Marker Details automatically update to reflect the subset that you’ve selected, and in the Count column you’ll see how many occurrences it has. The frame time graph highlights the marker. When you select a marker, the Marker Summary details panel also updates to show analysis statistics for that particular marker.

Searching by filters in Profile Analyzer.

There are following Filter available:

1) By name

You can search markers by substring ot a collection of substrings. If the name contains spaces, make sure to put quotes around the substring. The same goes for Exclude Names Filter. You can also populate marker filters by right-clicking on a marker of interest in the table and adding it to the filter selection.

Including marker to Filter.

2) Remove Filter

You can also choose to hide one marker and all child samples under these markers from the data, both in the tables and the graph. You can remove markers by selecting and choosing the Remove Marker option from the right click context menu.

Removing marker from Filter.

You can only remove one marker at a time; you can add a marker back by choosing None in the dropdown.

3) Threads

You can choose to see data for specific worker threads. To see all of them aggregated, check “All” at the top of the thread Select pop-up window.

4) Depth Slice

You can select marker callback depth to analyze.

5) Parent

To filter by parent, right-click on the marker in the marker table and select Set as Parent Marker Filter.

Setting marker as Parent.

6) Analysis Type

By default, the Profile Analyzer shows you Total time for the markers, but you can change to Self time. Self time is useful if you want to drill down to details to see where your time is really spent.

7) Units

The default units are milliseconds, but for smaller timings, you can switch to microseconds.

8) Marker Columns

This filter enables you to customize columns of the Marker Details section for your current needs.

Top 10 markers on median frame

This section shows the top 10 markers for the filters that you’ve selected. It is a very powerful tool if used properly. 

For example, most Unity’s subsystems have high-level markers at depth 3. Knowing that you can set Filters to:

  • Thread: Main Thread
  • Analysis Type: Total
  • Depth Slice: 3

This will show you the most consuming markers of Unity’s subsystems. This is a good way of making the very first diagnoze of your game’s performance.

Top 10 Markers view in Profile Analyzer.

Marker Details

At the bottom of the Profile Analyzer window you will find a table of the marker data from the Profiler, based on the filters you applied. The Unity Profiler data for all the markers are aggregated to provide median and other frame times, which are also displayed in this table. You can sort this data freely by any column.

Frame Summary and Marker Summary

The right side of the Profile Analyzer window starts with Frame Summary which displays highlights on the frame time, including the minimum, maximum, and median, with buttons that let you jump to specific frames in the Profiler. This area also shows you the frame time distribution histogram and a box and whisker plot. 

Below that there is the Marker Summary which shows the current selected markers contribution to the frame time. You can see up to 10 most costly frames of that marker and preview nice graph representing times on selected frames. At the bottom, there is information about the minimum and maximum times for individual marker instances within the aggregated data set.

Right panel of Profile Analyzer.

Make it work

It is important to remember that the Profile Analyzer should be used alongside Unity’s Profiler. In other words, Profile Analyzer can help you filter through the most important markers and find frames that are the most important which you can then keep analyzing in the Profiler.

It is important to make sure that the data you’re looking at is representative. You can easily find the representative frame using Profile Analyzer Frame Summary. Just click on the Median frame from the selection of frames range – it will select this frame in the Profiler. You can also right-click on the frame time graph and select Select Median Frame.

Selecting median frame from context menu.

But let’s not limit ourselves to single point entry. Right-click on the frame time graph and select Order By Frame Duration. Now you can select a set of frames around the median frame for a representative sample that smooths out some of the noise in your data.

Frames ordered by the duration.

How to check if you are GPU-bound?

You can do it pretty easily with the Profile Analyzer. First, find the Gfx.WaitForPresentOnGfxThread marker by typing its name to Name Filter. Analyze its data – if the median value of that marker is non-zero, then the CPU is waiting on the GPU to finish its activity before it can continue, aka – you are most likely GPU bound.

Searching for Gfx.WaitForPresentOnGfxThread marker.

Comparing data sets

Lastly, you can compare two sets of Profiler data. To do it select Compare mode at the top of the Profile Analyzer window. Then pull data from two different Profiler data sets. You can also pull data from one Profiler data set to compare for example two different frame ranges.

One data set is displayed in blue, and the other in orange. Additionally, every section of the Profile Analyzer window now visualizes loaded data sets, so you can quickly compare them. 

You can use this mode to e.g. check the effect of the global project setting change such as Graphics Jobs or Physics Solver Type. To do that, first make a baseline Profiler capture then, run the game the second time after applying the changes and make another capture. Pull both captures to the Profile Analyzer and compare results in the Frame Summary section.

Exporting data

It is good to remember that you can export the Profile Analyzer data to CSV format for further analysis. It is recommended to store that data alongside the Profiler capture data which it was generated based on.

Time to analyze!

Profile Analyzer brings new quality to the process of analyzing Profilers data. Finding bottlenecks and key performance indicators is now much easier than ever. Do not hesitate, check it yourself!

sir.rob
By sir.rob
SalesTeam

Call The Knights!

    Table of contents