There’s just one day left for the SELA Developer Days, and today I delivered my session titled Improving the Performance of .NET Applications. In this brief one-day session I wanted to distill the best practices and tools for measuring various performance metrics, but also provide some insight into OS and CLR internals relevant to high-performance development.
Other sessions today included Parallel Programming: One Step Beyond, Windows Phone Mango, Introduction to Scrum, and Visual Studio 2010 Testing Tools. I really wish I could attend Bnaya and Yaniv’s session on parallel programming – they showed lots of cool stuff, including TPL Dataflow, Rx integration, and even some HPC cluster coolness.
So what have I done today? There was a big group of over 50 people at the full-day session, and we had enough time to go over:
- Using sampling and instrumentation in the Visual Studio profiler to obtain initial execution time readings and more detailed information
- Tracing memory allocations and heap structure using CLR Profiler, Visual Studio memory allocations, and ANTS Memory Profiler
- Profiling cache misses along with a couple of examples where cache performance is crucial
- How managed types are laid out in memory and how this affects the performance of value types in particular
- How the garbage collector operates and why finalization is a bad idea 🙂