
dotTrace is shipped as two separate products for performance and memory profiling: dotTrace 4 Performance and dotTrace 3.5 Memory. |
Performance Profiling |
Top-class technology support dotTrace Performance provides a fast way to profile the performance of .NET applications based on .NET Framework 1.x to 4.0, .NET Compact Framework 3.5, and Silverlight 4. Types of applications that dotTrace Performance is able to profile include standalone desktop applications, web applications running under IIS or Visual Studio development server, Windows services, smart device applications, remote applications, and unit tests. |
Server-scale snapshot support dotTrace Performance is able to profile huge applications and get snapshots of up to several hundred gigabytes in size while still working at acceptable speed. That means, you can use dotTrace Performance for profiling complex desktop and server applications. |
Versatile profiling modes dotTrace Performance enables you to choose between several performance profiling modes:
In addition, dotTrace Performance provides a 'High Accuracy' flag to account for the time spent inside the profiler. When every millisecond counts, dotTrace pays attention! |
Local or remote profiling![]() Most of the time, you're profiling local applicaitons. However, what if you're faced with a lagging application on a remote web server? No worries: dotTrace Performance Professional Edition can connect to a remote machine to profile a standalone or web application, or a Windows service. You don't even have to install dotTrace there — just copy a couple of files. |
Convenient data representation A number of informative views (Call Tree, Hot Spots, Threads Tree and more) allow convenient inspection of profiling data stored in snapshots. The importance of each function call is represented with descriptive icons, along with precise execution times and other relevant information. You can open functions in individual tabs, easily navigate views with keyboard shortcuts, focus on relevant calls, and create profiling reports by saving views to an external file. ![]() |
Instant estimation of performance gains![]() Sometimes during profiling sessions you notice that your application is running slow or hanging, only to realize that you have failed to turn off a debug switch. After that, you have to reprofile everything. Other times, after hours of continuous profiling, you optimize a time-consuming method, and again, you have to start from scratch to see if the optimization actually works. dotTrace Performance comes to the rescue! It is able to recalculate a snapshot instantly — without reprofiling your application. It's like asking the profiler: "what if I optimize this function by 40%?". Just call Edit | Adjust Time and specify the new time for the function or for all functions in a particular class. Time values for the entire snapshots will be recalculated. |
Comparing performance snapshots dotTrace Performance is able to compare any two performance snapshots of the same application. It generates a comparison snapshotwhich shows the difference in the number of calls and times consumed by each function. Comparison snapshots can be viewed and analyzed the same way as regular performance snapshots. ![]() |
Quick function info![]() You can look up Quick Info on any function from the Call Tree view. The lookup window provides a summary of function statistics with respect to the selected call and to all calls in the current tab. |
Filtering and formatting dotTrace Performance lets you hide functions of little importance from a snapshot and highlight those that really make a difference. Filter out system calls and other non-essential functions with a combination of different filters. To emphasize important functions or classes of functions, use custom formatting rules. ![]() |
Folding calls In addition to filtering and formatting, dotTrace Performance provides a few more options to focus on the most relevant profiling results.
|
Annotating snapshots![]() During performance analysis, you may want to leave a comment about a function and its behavior. dotTrace Performance provides textual annotations for functions that are saved with the snapshot and can be reviewed later. |
Search and navigate to function calls You can quickly locate functions and navigate to them. When searching for a function, you can type in the function name using CamelHumps, just like you do in ReSharper. ![]() You can highlight all occurrences of the function in the current view and then navigate between them with a simple press of a key: ![]() |
Visual Studio integration and source code preview
dotTrace Performance provides a two-way integration with Visual Studio 2005, 2008, and 2010, allowing you to profile your applications right from the IDE, or view suspicious source code right from the profiler (and open it in Visual Studio for editing.) Run dotTrace Performance from Visual Studio: With a single button click, you can launch profiling or your startup project directly from Visual Studio. In addition, if you have ReSharper installed in your Visual Studio, you can easily start profiling unit tests from the code editor.![]() Open a file from dotTrace Performance in Visual Studio — if your solution is opened in Visual Studio, you can click a button in thePreview Source tab to navigate to the corresponding source file in Visual Studio. ![]() |
Memory Profiling |
With dotTrace Memory, you can quickly profile the memory usage of your applications based on .NET Framework up to version 4. The profiling process is not only simple but fast. A wealth of profiling data is accurately recorded and presented in the form of memory snapshots, allowing thorough analysis of memory issues. |
Versatile memory profiling modes Depending on your needs, you can profile memory in two different ways:
![]() |
Convenient data representation Each memory snapshot holds a wealth of data on all objects allocated in memory, from the roots to every single object allocated or deleted at any time during the profiling session. A number of views are available to you for examining and analyzing memory snapshots, including Class List, Namespace Tree, Outgoing references, Shortest root path, and Allocation Tree.You can also focus on any subsystem of your application by opening it in a separate tab. |
Find objects by class
To help you locate the presence of particular class of objects in memory, dotTrace provides the rapid Find objects by class (Ctrl+N)search feature. The use of wildcards and CamelCase abbreviations is supported for faster search results. ![]() |
Finalized objects
dotTrace Memory lets you see finalized objects — objects which were deleted by the finalizer. You can examine them to find that some were not properly disposed of in the code of your application, which is a potential memory leak. ![]() |
Merging strongly-connected objects When you are navigating though the graph of objects in memory, some dependencies are difficult to see at a glance. dotTrace Memory offers an easy way to merge (group) strongly-connected objects together, so that you can see which objects and/or groups any particular node is holding. ![]() |