The Bottlenecks view shows methods that may significantly reduce the performance of your program.
How it works and what to look for
The analysis takes all the methods with high percentage of the thread’s total time. Then it gets only these, which are called from
more than one unique parent method (fan-in). This means, methods which are only delegating
work won`t be shown (for example: program entry points). Having this, you can analyze their callers and the portion of total
time each of them is responsible for. Combined with the Hot Spots view,
this analysis gives you a good idea of which methods deserve your attention and will benefit substantially from optimizing.
If these functions are from BCL or CLR, you may browse their caller tree and see if you can optimize their callers instead.
To see the bottlenecks in the All Methods List, enable them by pressing the
() in the ribbon. Then, you will be able to distinguish them by the icon in the method list:
Getting started with the Bottlenecks view
The context menu contains the following commands:
- Signatures - this option is used to control whether to display the parameters of each
function in the Name column. You can switch it off to reduce the amount of text on the screen.
- Find in Root Call Tree - activates the Call Tree
view and shows the first occurrence of the method. You can use the buttons of the navigation toolbar to locate all other
calls to this method in the call tree.
- Merge All Calls in New View - opens a new view and merges all calls to the selected function in
the entire process. This is helpful if you want to investigate how much total time it took, which functions it called and
how the time spent in it is distributed among its callees, regardless of a particular call site.
- Show Caller Tree - opens a new Caller Tree
view with all callers of the selected function presented as child nodes - a tree of callers. This can help you find
where exactly it has been called.
- Show Just My Code - toggles the user code filter for this node. When turned off all non-user
code under this node is shown. When on, all non-user code between this node and child user code nodes down the tree is
removed and user code child nodes are brought up (hoisted). Hoisted calls are marked with the icon.
Clicking the icon next to the node name
also toggles filtering. You can control which assemblies are considered user code in the
Assembly List view.
- View Source - activates the Source Code Viewer tab
and opens the source file if it is available. If the source is unavailable JustTrace will decompile the class using
JustDecompile and will show the generated source code.
Each node of the Bottlenecks view contains the following information:
- Class Name - fully qualified name of the type.
- Own Time (ms) - total time spent in this method. Percentage is measured against the total running time of the thread.
- Total Time (ms) - total time spent in this call. Percentage is measured against the total running time of the thread.