JetBrains Rider 2022.2 Help

Profile Unity Applications

JetBrains Rider comes bundled with dotTrace performance profiler that allows finding performance bottlenecks in your Unity games. This includes finding the slowest methods in your scripts, determining the cause of CPU starvation, blocking garbage collection, disk I/O, and other issues. The integrated profiler is based on JetBrains dotTrace and is compatible with Unity 2018.3 and later. You can use the profiler via the dotTrace Profiler tool window. For more details on the integrated profiler, refer to Performance profiling of .NET code.

Installation and licensing

dotTrace and dotMemory are provided as a single bundled plugin for Rider. The plugin is installed along with Rider automatically with no additional actions needed. If you want to disable the plugin, use the Rider's Plugins settings.

Note that the dotTrace and dotMemory plugin is available in Rider only for the owners of dotUltimate or All Products Pack subscriptions.

There are two ways to profile a Unity application:

  • Profile a project opened in the Unity Editor and Rider.

  • Profile a compiled Unity application executable file.

Profile a project opened in the Unity Editor and Rider

  1. Close the Unity Editor if it is open.

  2. In Rider, on the toolbar, choose a run configuration: either Attach to Unity Editor or Attach to Unity Editor and Play.

  3. On the toolbar, make sure the Timeline (Unity) profiling configuration is selected.

    On Windows, you can also profile the native part of your Unity application. To do this, you should select the Enable native profiling option in the profiling configuration settings. This option may be helpful for finding low-level performance issues related to rendering and other Unity engine subsystems.

    Unity profiling config
  4. Run profiling by clicking the Profile Unity app Profile 'Attach to Unity Editor' using 'Timeline (Unity)' profiling configuration button on the toolbar.

  5. Reproduce the performance issue you are looking for or, if you just evaluate the overall app performance, go through the desired usage scenarios in your application.

  6. Click Get Performance Snapshot Rider Get Snapshot. The collected snapshot will be added to the list of snapshots inside the dotTrace Profiler window. To start collecting profiling data again, click Start Recording Start Recording.

  7. After you collect a snapshot(s), you can finish the profiling session. Normally, you do it either by closing the profiled application or using the Kill processes Kill button (it forcibly terminates the profiled app and the session, so, use it only in emergency cases).

  8. Analyze the collected snapshots.

Profile an executable file of a Unity app

  1. Create a new run configuration based on Unity Executable.

  2. Select this run configuration on the toolbar.

  3. On the toolbar, choose the Timeline (Unity) profiling configuration.

    On Windows, you can also profile the native part of your Unity application. To do this, you should select the Enable native profiling option in the profiling configuration settings. This option may be helpful for finding low-level performance issues related to rendering and other Unity engine subsystems.

  4. Run profiling by clicking the Profile Unity app Run 'your_config' with 'Timeline (Unity)' button on the toolbar.

  5. Reproduce the performance issue you are looking for or, if you just evaluate the overall app performance, go through the desired usage scenarios in your application.

  6. Click Get Performance Snapshot Rider Get Snapshot. The collected snapshot will be added to the list of snapshots inside the dotTrace Profiler window. To start collecting profiling data again, click Start Recording Start Recording.

  7. After you collect a snapshot(s), you can finish the profiling session. Normally, you do it either by closing the profiled application or using the Kill processes Kill button (it forcibly terminates the profiled app and the session, so, use it only in emergency cases).

  8. Analyze the collected snapshots.

Last modified: 31 July 2022