In this chapter, you learned about the value of using profiling to identify problem areas in your code. Until now, developers needed to use tools outside of Visual Studio to profile for performance issues. Fortunately, Team System now fully integrates profiling tools within the IDE and with other Team System features.
We explained the difference between sampling and instrumentation, when each should be applied, and how to configure the profiler to execute each type. You saw the Performance Explorer in action and learned how to create and configure performance sessions and their targets.
You then learned how to invoke a profiling session and how to work with the reports that are generated after each run. You looked at each of the available report types, including Call Tree, Caller/Callee, and more.
While Visual Studio offers a great deal of flexibility in your profiling, you may find you need to specify further options or profile applications from a batch application or build system. We introduced the command-line tools that are available and explained how to replicate the functionality of Visual Studio from outside the IDE. For additional flexibility, we described how to use the profiling APIs that enable you to exert even more control over the profiling process.
Finally, we described several common scenarios that can cause issues for users of the profiling tools.
Of course, profiling is only one of the tools at your disposal to help ensure that your applications are of the highest quality. You have seen in Chapters 8 and 9 that Team System offers static code analysis to detect common problems. You will see in Part 3 that Team Test enables you to further analyze your applications to see how they perform under load.