JetBrains dotTrace is the complete profiling solution for .NET. It profiles:
· the performance of .NET Framework 1.1, 2.0 and 3.x applications
· the memory usage of .NET Framework 2.0 and 3.x applications
· ASP.NET applications running on Internet Information Server & ASP.NET Development Server
· Windows services
Convenience and ease of use set dotTrace Profiler apart from the many profiling tools built for the Microsoft .NET platform.
The friendly program interface features effective navigation, easy filtering, smart search options and handy source preview. Its speed and efficiency also cannot go unmentioned: dotTrace decisively outperforms the great majority of its in-class competitors.
Performance profiling
dotTrace provides an extremely fast way to profile the performance of .NET applications (frameworks 1.x, 2.0 or 3.x).
Convenient data representation
A number of informative views (Call Tree, Hot Spots 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, skip through unimportant or filtered calls, and create profiling reports by saving any view to an external file.
Versatile profiling modes
dotTrace offers two additional performance profiling modes: Sampling profiling (vs. Tracing profiling) and Routine thread time measurement (vs. Wall time measurement). A total of 4 possible profiling modes are now available.
· Sampling profiling is a profiling method which is up to 30 times faster than regular tracing profiling, but at the expense of lower accuracy. It is extremely useful for at least two profiling scenarios: first, quickly getting a general idea of your application's performance, and second, profiling for extensive periods of time, up to many hours long.
· Routine thread time is measured by a thread-specific timer which is paused when its thread is paused. Using this mode, dotTrace can measure the contribution of individual threads in multithreaded applications, reducing interference between threads.
Performance snapshot comparison
dotTrace is able to compare any two performance snapshots of the same application. It generates a comparison snapshot which 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.
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
You can apply predefined and customizable filter patterns to focus on the functions most important to you. Filter out system calls and other nonessential functions with a combination of different Hide filters. Emphasize specific functions of selected classes with one or more Show filters.
Folding and advanced filtering
dotTrace makes it much easier to see all the data you want to see and none that you don't.
· Fold filtered calls: Chains of filtered calls can be set to be folded by default or folded/unfolded manually.
· Fold recursive calls: Recursive call chains can be folded to display the aggregate timings and call counts of all functions called recursively.
Hide functions with 0% of root time
Functions that consumed 0% of root time can be hidden from view.
Find function
Quickly locate functions and navigate to them. Optimize the way you like to search: type in the function name or use the provided list of namespaces and classes to go through the hierarchy.
You can highlight all occurrences of the function in the current view and then navigate between them with a simple press of a key. You can also quickly open the function in a new tab, or view its Quick Info.
Tab saving
Individual tabs in performance snapshots may be saved as separate snapshots.
Memory profiling
With dotTrace you can quickly profile the memory usage of your .NET applications (frameworks 2.0 and 3.x only). 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:
· To check what objects are currently loaded in memory (but shouldn't be), you can dump memory at any time during profiling.
· To also view the difference between two application memory states, during profiling you can mark the start and the end of a time interval, then capture a snapshot containing the difference data. A difference snapshot lets you see how much new memory was allocated and how much was released during the marked time interval. The view can be filtered to show only Live objects, only New objects, only Dead objects, only Garbage objects, or the difference between New and Dead objects.
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 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 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.
General Features
Fastest profiling
dotTrace decisively outperforms its in-class competitors. This fact alone ensures that you save valuable time with its profiling speed and ease of use.
Source view
dotTrace automatically locates the underlying source code for selected functions. If necessary, you can manually specify the appropriate source code location by browsing to the source files.
If your solution is currently opened, click the quick link in Source View to navigate to the corresponding source file in Visual Studio.
You can also configure source lookup to make sure dotTrace looks in the right place for source files. Define folder substitutions in case your code has been moved, or to allow your development team to see the same snapshots and view the source code correctly.
Multiple snapshots
dotTrace easily handles multiple snapshots, providing you with all-around profiling convenience. First, you can generate an unlimited number of snapshots of the same application during a single profiling session. Second, you can open several snapshots at the same time, so that you can compare and contrast them (for performance snapshots, this can even be done automatically).
Profiling ASP.NET applications
dotTrace easily profiles ASP.NET applications running on IIS, versions 5.x, 6.0 and 7.0, and/or on Visual Studio Development web-server. Simply specify the start page URL of your web application and profile it the same way as a desktop program. ASP.NET applications can also be profiled from Visual Studio.
Windows services profiling
dotTrace lets you easily profile Windows services. Just select the service from the list of all available Windows services and profile it the same way as web applications.
Integration with Visual Studio
Run dotTrace from Visual Studio — with the click of the
Open a file from dotTrace in Visual Studio — if your solution is opened in Visual Studio, you can click a quick link in Source View to navigate to the corresponding source file in Visual Studio.
Command line options
You can profile applications, open snapshots and generate reports from any batch script by using the command line options provided with dotTrace.
Profiling API
Use advanced profiling scenarios by controlling profiling functions from within the application being profiled, with the help of our Profiling API.
Licensing
Floating Licenses are available to legal entities, including companies and organizations (both for-profit and non-profit), which require the software for general commercial use. Floating Licenses allow the use of the software on any computer, operating system, and by any developer within a legal entity in compliance with the total number of Floating Licenses purchased. Floating Licenses require a license server to run the software.
Per-Developer Licenses are available to legal entities, including companies and organizations (both for-profit and non-profit), which require the software for general commercial use. One Per-Developer License is required per each single developer using dotTrace within a legal entity, regardless of whether such use is occasional or full-time.
If you want to purchase a license for your personal use, and you are the only person planning to use that license, then the Personal License is for you. Personal licenses are non-transferable, and they are not available to companies.