JetBrains Rider 2023.3 Help

Profiling Configurations Dialog

Run | Switch Profiling Configuration | Edit Configurations...

Use this dialog to create, edit, adjust, or remove profiling configurations.

Common options

Name

In this field, specify the name for the profiling configuration. The name will help you identify the created configuration when you choose to edit it later, or when you invoke it.

Control profiling manually

Enables you to control profiling manually via the profiler controls. For example, to take a snapshot, you will have to click the Get Snapshot button

Collect profiling data from start

Collect profiling data from start: If selected, dotTrace will start collecting profiling data right after the launch. Otherwise, dotTrace will start collecting the data only after you click Start Recording in the dotTrace Profiler tool window.

Control profiling via API

Enables you to control profiling directly from the code of the profiled application. For example, to take a snapshot in the exact point of your code. Learn more about using the API in the dotTrace documentation.

Profile child processes

If selected, dotTrace will profile not only the main app process but the processes it runs as well.

Toolbar

The tree view of profiling configurations has a toolbar that helps you manage configurations available in your solution as well as adjust default configurations templates.

Item

Shortcut

Description

Add profiling configuration

Alt+Insert

Create a profiling configuration.

Delete profiling configuration

Alt+Delete

Delete the selected profiling configuration.

Copy

Ctrl+D

Create a copy of the selected profiling configuration.

Up/Down

Alt+Up/Alt+Down

Move the selected profiling configuration up and down in the list.

The order of configurations in the list defines the order, in which the configurations appear when you choose a profiling configuration.

Profiling type: Sampling

The Sampling profiling type provides accurate time measurement but it does not measure number of method calls. Sampling is recommended for most profiling cases. Ideal when you look for performance issues in your application for the first time.

Time measurement

This option defines how dotTrace must calculate calls time. For more information, refer to https://www.jetbrains.com/help/profiler/Profiling_Guidelines__Setting_the_Right_Meter_Kind.html. Typically, this is a choice between whether dotTrace should calculate time when a thread is not working or should not. More specifically, there are the following options:

Real time (performance counter)

Recommended. dotTrace calculates the overall real time passed between method entry and exit. This time does not depend on app threads states. The time is calculated using system performance counter.

Real time (CPU instruction)

dotTrace calculates the overall real time passed between method entry and exit. This time does not depend on app threads states. The time is calculated using the CPU register.

Thread time

dotTrace calculates only the time when a certain thread is running. The time when the thread is waiting or sleeping is not included in calculation.

Thread cycle time

dotTrace calculates only the time when a certain thread is running. The time when the thread is waiting or sleeping is not included in calculation. The time is calculated using the CPU register.

Profiling type: Tracing

The Tracing profiling type provides accurate calls number measurement. Note that time measurement may be inaccurate due to profiling overhead. Use this profiling type only when sampling data is not enough. For example, for analyzing algorithm complexity (when info about number of calls is more valuable than call time values).

Time measurement

This option defines how dotTrace must calculate calls time. For more information, refer to https://www.jetbrains.com/help/profiler/Profiling_Guidelines__Setting_the_Right_Meter_Kind.html. Typically, this is a choice between whether dotTrace should calculate time when a thread is not working or should not. More specifically, there are the following options:

Real time (performance counter)

Recommended. dotTrace calculates the overall real time passed between method entry and exit. This time does not depend on app threads states. The time is calculated using system performance counter.

Real time (CPU instruction)

dotTrace calculates the overall real time passed between method entry and exit. This time does not depend on app threads states. The time is calculated using the CPU register.

Thread time

dotTrace calculates only the time when a certain thread is running. The time when the thread is waiting or sleeping is not included in calculation.

Thread cycle time

dotTrace calculates only the time when a certain thread is running. The time when the thread is waiting or sleeping is not included in calculation. The time is calculated using the CPU register.

Enable inlining

Clear this option if you want dotTrace to turn off JIT-inlining and get call stacks that closely resemble the structure of application's source code.

High accuracy

If selected, dotTrace will take into account time spent in profiler itself by taking more time samples.

Profiling type: Line-by-line

During Line-by-line profiling, each line of code is measured, call time values are inaccurate due to huge profiler overhead. Use it for advanced cases only. For example, when you already know what function causes issues and want to analyze each line of it.

Time measurement

This option defines how dotTrace must calculate calls time. For more information, refer to https://www.jetbrains.com/help/profiler/Profiling_Guidelines__Setting_the_Right_Meter_Kind.html. Typically, this is a choice between whether dotTrace should calculate time when a thread is not working or should not. More specifically, there are the following options:

Real time (performance counter)

Recommended. dotTrace calculates the overall real time passed between method entry and exit. This time does not depend on app threads states. The time is calculated using system performance counter.

Real time (CPU instruction)

dotTrace calculates the overall real time passed between method entry and exit. This time does not depend on app threads states. The time is calculated using the CPU register.

Thread time

dotTrace calculates only the time when a certain thread is running. The time when the thread is waiting or sleeping is not included in calculation.

Thread cycle time

dotTrace calculates only the time when a certain thread is running. The time when the thread is waiting or sleeping is not included in calculation. The time is calculated using the CPU register.

Enable inlining

Clear this option if you want dotTrace to turn off JIT-inlining and get call stacks that closely resemble the structure of application's source code.

High accuracy

If selected, dotTrace will take into account time spent in profiler itself by taking more time samples.

Profiling type: Timeline

During a Timeline profiling session, dotTrace collects temporal data about thread states, application events, and other multi-threading data. We recommend this profiling type for most cases. Especially, for analyzing multithreaded apps. Use it, for example, to determine the cause of UI freezes, excessive garbage collections, uneven workload distribution, insufficient I/O, and so on.

Collect native allocations

If selected, dotTrace will collect information about all memory allocations the profiled application does in the native (unmanaged) heap.

Collect TPL events

If selected, profiling performance may be affected but dotTrace will collect Task Parallel Library (TPL) data. If cleared, there will be no Task nodes in Call Tree and async call nodes will be shown without their await and continuations parts.

Clear this option in case your application does not use multitasking or you do not need this info.

Collect debug output

If selected, dotTrace will collect information about all messages the profiled application sends to the debug output.

Profiling type: Timeline (Mono)

You can profile Mono applications only using the Timeline profiling type. To distinguish a profiling type for .NET Framework applications, there is a separate Timeline (Mono) profiling type.

Collect native allocations

If selected, dotTrace will collect information about all memory allocations the profiled application does in the native (unmanaged) heap.

Collect TPL events

If selected, profiling performance may be affected but dotTrace will collect Task Parallel Library (TPL) data. If cleared, there will be no Task nodes in Call Tree and async call nodes will be shown without their await and continuations parts.

Clear this option in case your application does not use multitasking or you do not need this info.

Collect debug output

If selected, dotTrace will collect information about all messages the profiled application sends to the debug output.

Profiling type: Timeline (Unity)

You can profile Unity applications only using the Timeline profiling type. To distinguish a profiling type for .NET Framework applications, there is a separate Timeline (Unity) profiling type.

Collect native allocations

If selected, dotTrace will collect information about all memory allocations the profiled application does in the native (unmanaged) heap.

Collect TPL events

If selected, profiling performance may be affected but dotTrace will collect Task Parallel Library (TPL) data. If cleared, there will be no Task nodes in Call Tree and async call nodes will be shown without their await and continuations parts.

Clear this option in case your application does not use multitasking or you do not need this info.

Collect debug output

If selected, dotTrace will collect information about all messages the profiled application sends to the debug output.

Last modified: 21 March 2024