I’m almost sure that when you got profiling results for your app for the first time, your main question was “Hell, what should I start with?”
Indeed, a profiling snapshot offers you a whole bunch of different data, like overall time consumed by app’s threads, detailed info on each performed call, and much more. Drilling down through an entire call tree can transform into a long and tedious process even for an experienced developer. Is there a way to start analyzing the snapshot without the need to dive in all those details? Starting dotTrace Performance 5.5, the answer is “Yes, you should start with examining subsystems”.
What Are Subsystems?
Subsystems is a way of presenting profiling snapshot data which gives you a quick overview of time consumed by certain system components (various parts of .NET Framework, external libraries, your own code and so on). A subsystem simply groups all calls made within a certain namespace or assembly. For example, you can create a subsystem for
System.Windows.Forms to summarize all WinForms calls in your app. This will show you how much time was required for interaction with your app:
Let’s take a more detailed look at how subsystems can help you in profiling your apps.