What’s New in dotTrace
This page guides you through major updates in dotTrace versions 6.0–6.2 and 10. Highlights include a new Timeline profiling mode, understanding of HTTP requests and SQL, as well as rich integration with Visual Studio and ReSharper through run configurations and a dedicated Performance Profiler tool window in Visual Studio.
Profiling inside Visual Studio
dotTrace 10 makes its Timeline profiling available right in Visual Studio using a dedicated Performance Profiler tool window.
This enables you to profile, view performance timelines and call stacks, apply filters, view top methods, investigate times by thread, and perform many more performance profiling actions without leaving your IDE. Of course, if you ever need to, you can still choose to open any snapshot in the standalone dotTrace Timeline Viewer.
Timeline integration is available in Visual Studio 2010 through 2015.
ReSharper 10 support
Starting with dotTrace 6, we offer a common installer for all ReSharper Ultimate tools. All these tools use a lot of shared assemblies, which helps put less memory pressure on Visual Studio. Actions provided by these tools including dotTrace are now available in Visual Studio from the ReSharper menu.
dotTrace 10 brings integration with ReSharper 10 for profiling unit tests from Visual Studio code editor, Solution Explorer or ReSharper's unit tests runner.
By the way, if you're wondering why dotTrace is actually at version 10 following a 6.2 release, that's because we're now using common versioning across the entire ReSharper Ultimate suite.
Profiling run configurations
ReSharper and its recently added 'run configurations' feature can do wonders for profiling. Create and profile predefined run configurations with different run parameters for your startup project, and quickly start profiling any particular scenarios you are interested in.
Now you can instantly get comprehensive profiling data without building the solution, running the profiler, or performing a usage scenario. Just add a static method near the investigated code and profile it in a few clicks, made possible by the fantastic 'run configurations'.
Incoming HTTP requests
Timeline mode introduces a new filter that allows you to indicate the time intervals when your web application processes incoming HTTP requests. Get the exact data, determine the exact root cause and zero in on the methods that run slowly. Make your web applications faster with Timeline profiling.
This completely new way profiling method is perfect for analyzing UI freezes, sync delays, excessive garbage collections, file I/O, and other interval events.
Timeline profiling collects temporal call stack and thread state data about your application, as well as temporal data about memory allocation, garbage collections, and I/O operations. Analyze Time data, Memory Allocation data, or data about raised Exceptions in your application. Learn more »
New profiling experience
Experience the most flexible way to profile .NET applications, ever.
Slice and dice data using filters, the call tree, or diagrams. In addition to activating a specific filter, each control is constantly updated with up-to-date filtered information from other controls.
Combine powerful filters to analyze virtually any aspect of your application. Learn more »
Use filters in any combination to slice and dice your profiling data. Four available filter types let you configure subject analysis, thread state, blocking GC and interval filters. After filters are applied, a set of time intervals or point events are created based on a specific condition, also reflected by other components.
Any data you select via filters or the call tree are highlighted on Timeline diagrams.
In Timeline profiling, each diagram is more than just a display. You can select any time interval you want to investigate directly on the diagram. Once you do, all the other controls are instantly recalculated, letting you browse profiling data from multiple sides.
For your convenience there are specific diagrams visualizing blocking GC, UI freezes, threads states, as well as CPU utilization.
SQL query profiling
SQL queries are now supported when profiling in Timeline mode, letting you analyze how each particular query affects application performance. Use the new filter "SQL Client" to see all SQL queries and SQL connections along with their performance statistics. For your convenience, query contents can be opened in a separate window for further analysis. You can still filter all data by choosing one or multiple queries and investigate the methods they were executed from. By using these features, you can optimize your queries to boost your application performance. No more ineffective SQL queries!
The new Home screen will make you feel right at home in dotTrace. From here, you can start a new local or remote profiling session for known .NET application types, attach to a running process, configure a session, or open snapshots collected during recent sessions. Every application type will offer different settings for running the application you want to profile. Select the Advanced checkbox to get additional options such as using the profiler API.
dotTrace Home: Tutorials
If you're new to performance profiling, check out the Tutorials section on the Home screen. Use the redesigned online help system for guidance on how dotTrace works and how to analyze collected data.
With the redesigned profiling controller, you can start profiling, generate a snapshot, tell the profiler to continue capturing data or stop right there, detach the profiler, or kill the running process.
One notable enhancement is that you can expand the profiling controller for a 'sneak peek' into the real-time CPU and memory usage of your application.
If your application includes multiple running processes, you can choose to profile any number of them from the Processes page.
Now you can choose in one click whether you want to immediately start collecting further profiling data or get a snapshot and wait.
More flexibility for subsystems
When analyzing profiling results, we get a broad overview of subsystems used by our application. This gives us a rough idea of where most time is spent: in the UI, in user code, with Garbage Collection, with I/O, or custom subsystems.
Now more flexibility is available here. Select "Join" in subsystems options to calculate a subsystem's time within the calling subsystems. The subsystem will be shown separately only in case there are no subsystems to join with. Select "Hide" to exclude a subsystem from current calculations.
Enhanced snapshot overview
Snapshot overview now includes Runtime chart that shows application CPU activity and memory consumption during profiling. Double arrow lines show timeframes when performance data were collected.
- Snapshots can be annotated directly from dotTrace Home.
- Enhanced Hot Spot detection algorithm can take into account virtual function from common parent.