Benefits of dotTrace Performance

Developers often have a tendency of applying premature optimization to their code; that is, focusing on trying to optimize code that in the long run has little to no effect on the overall outcome of the application. Focusing on how to optimize calls to a certain method, when the major bottleneck of an application is the connection to the database or bandwidth to the Internet is mostly wasted effort.

Optimization should take place when potential issues are encountered with performance. The problem is however that these usually occur once the application has been deployed and is in production use for a certain amount of time. And this is when it gets difficult, which, without the proper tooling can become an impossible, or at the very least, extremely expensive process.

Locating potential bottlenecks

Finding performance issues can be daunting, even with tools. A bottleneck can be located anywhere in an application. Having to search for it manually can be cumbersome and not cost-effective.

dotTrace Performance provides the developer with a series of features that aid in this process. By analyzing executions and profiling each application run, dotTrace Performance can find potential bottlenecks and mark them as Hot Spots for further investigation:

Hot Spots view

Apart from the Hot Spots view, dotTrace Performance offers a variety of other views that provide extremely useful information in performance analysis such as the list of all functions called by a specific function:

Plain List view

Quick estimation of potential performance gains

Making instant adjustments

Once a potential bottleneck is found, solving it often involves re-architecting a system or changing a complex algorithm. Only when this redesign is complete, and new performance measurements are made, can we be certain whether the change has an impact on the overall system; doing this can be expensive, especially if we are not sure of the outcome.

dotTrace Performance minimizes optimization costs by allowing us to simulate improvements in parts of the system before committing to any changes. By permitting fine-tuning of timing involved in each call, dotTrace Performance can analyze and display the overall impact that a possible improvement could make.

Snapshot comparison

Snapshot comparison

Once we are happy with the results of a simulation, we can then proceed to make the actual changes to the system. On completion, we can once again run a profiling exercise to validate the changes. At this point, it is important to do a comparison with a prior run. Once again, dotTrace Performance facilitates this by allowing us to make snapshot comparisons between two performance runs. We can focus on the entire system or a specific call and dotTrace Performance will automatically annotate the comparison with information about the difference it has had.

Support for a variety of applications

Nowadays it is common to have applications for all sorts of platforms and devices, from Windows Desktop, Services, Web, Silverlight or even applications for mobile devices. As such, it is important for a profiling tool to support all of these. dotTrace Performance is one of the few tools on the market that allows profiling of any type of managed assembly, from a common standalone .NET desktop application to Microsoft Silverlight 4.

Code preview during profiling

As you examine a performance snapshot, dotTrace Performance provides different ways to instantly see what could be wrong with code that looks to be behind a specific performance problem. If you have PDBs at hand for the application being profiled, dotTrace Performance displays source code preview for any function selected in a snapshot. If PDBs are not available, dotTrace Performance can download them from a symbol server, or reconstruct code using its integrated decompiler.

Source code preview and integration with Visual Studio

Integration with Visual Studio and ReSharper

Thanks to its integration with Visual Studio, dotTrace Performance not only allows applications to be profiled using the standalone client, but also launch profiling directly from with Visual Studio. Integration with ReSharper unit test runner facilitates profiling of NUnit, xUnit, and MSTest unit tests that you can launch right from within Visual Studio.

Profiling production applications remotely

At times it is difficult to reproduce a performance problem on a development machine. In such cases, it would be ideal to be able to run dotTrace Performance on the production machine where the issues arise. However, that is not always possible due to restrictions. In these scenarios, dotTrace offers the ability to do remote profiling, without the need of installing dotTrace Performance on the remote server.

More than that, dotTrace Performance can attach to an already running application, meaning that you don't have to restart a production application to start profiling it: you connect a profiler to the application when you need to grab profiling data, and disconnect it when it's no longer needed.

Remote Profiling

All in all, dotTrace Performance offers an impressive range of supported application types and is insightful enough for you to quickly and efficiently locate and eliminate performance bottlenecks.