JetBrains Rider 2021.1 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 manuallyEnables 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 startCollect 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 APIEnables 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 processesIf 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.

ItemShortcutDescription
Add profiling configurationAlt+InsertCreate a profiling configuration.
Delete profiling configurationAlt+DeleteDelete the selected profiling configuration.
CopyCtrl+DCreate a copy of the selected profiling configuration.
Up/ DownAlt+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 details, 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 four 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. 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. 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. 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 details, 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 four 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. 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. 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. Time is calculated using the CPU register.

Enable inliningClear 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 accuracyIf 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 details, 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 four 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. 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. 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. Time is calculated using the CPU register.

Enable inliningClear 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 accuracyIf 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 allocationsIf selected, dotTrace will collect information about all memory allocations the profiled application does in the native (unmanaged) heap. To be able to select this option, you must have Windows Performance Toolkit installed on your computer.
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 outputIf 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 allocationsIf selected, dotTrace will collect information about all memory allocations the profiled application does in the native (unmanaged) heap. To be able to select this option, you must have Windows Performance Toolkit installed on your computer.
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 outputIf 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 allocationsIf selected, dotTrace will collect information about all memory allocations the profiled application does in the native (unmanaged) heap. To be able to select this option, you must have Windows Performance Toolkit installed on your computer.
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 outputIf selected, dotTrace will collect information about all messages the profiled application sends to the debug output.
Last modified: 23 April 2021