Performance profiling enhancements
dotTrace 3.0 handles many more profiling scenarios, with 2 new profiling modes: Thread-time CPU profiling and Sampling CPU profiling. In the sampling mode, you are able to profile the performance of your application much faster, but at the expense of lower accuracy. With Thread-time profiling, you can measure the contribution of individual threads in multithreaded applications, reducing interference between threads. Other enhancements include individual tab saving and more support for filtering and folding function calls in several views.
Memory profiling enhancements
dotTrace 3.0 gives you another means for spotting memory leaks - finalized objects. You can now see all objects that were deleted by the finalizer and not properly disposed of in the code of your application. Among other enhancements is the possibility to merge strongly-connected objects in groups as well as navigation to classes' source in source preview. Also, information about held and reachable objects is now serialized to disk, eliminating the necessity to recompute it on each memory snapshot opening.
Other important improvements
With dotTrace 3.0, you can now do more with you ASP.NET applications. They can be profiled from Microsoft Visual Studio and also run using Visual Studio Development web-server (as an alternative to IIS). Individual tabs can now be saved as separate snapshots. Also, dotTrace helps you profile your older applications in those profiling modes which are not supported for the .NET 1.1 framework, by automatically creating an appropriate .config file.
Performance profiling
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.
Quick 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
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 2.0 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 (framework 2.0 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 and 6.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.
dotTrace easily profiles ASP.NET applications running on IIS, versions 5.x and 6.0. Simply specify the start page URL of your web application and profile it the same way as a desktop program.
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 button you can profile the StartUp project of your solution in Visual Studio. In addition, if you have the JetBrains ReSharper add-in installed on your Visual Studio, you can easily start profiling unit tests from the code editor.
- 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.
dotTrace is licensed per user, each single user requires a license.
A license permits:
Perpetual access to the licensed dotTrace version and documentation
Free and unlimited access to technical support via email
Benefits:
- A license is perpetual. No annual renewal is required
- A single user can use his license on different computers, provided that it's not concurrent use.