In addition to my three breakout sessions, I’ve also had the pleasure of delivering two workshops at the Sela Developer Practice: Improving .NET Performance and .NET/C++ Interop Crash Course. Although these workshops are quite time-tested, I always try to add new materials and tools to make them more interesting for both myself and the audience. There’s also constant interest in these topics — I had 110 people registered for the performance workshop and more than 40 people at the interop course.
In the performance workshop, we cover various performance measurement tools. I always try to squeeze in new tools in addition to old-time favorites like the Visual Studio Profiler and ANTS Memory Profiler. This time, I also showed the Windows Performance Analyzer (wpa.exe) and PerfView, two tools that are based on the ETW platform and can collect and display a wealth of in-depth diagnostic information that helps with understanding CPU spikes, I/O bottlenecks, and memory leaks. I also used the Visual Studio Concurrency Visualizer to diagnose a latency bug in a UI application.
The slides and demos from the performance day are available here. NOTE: Because these materials are from a Sela official course, they are password-protected. If you attended the workshop, please send me an email (email@example.com) to receive the password.
In the interop workshop, I barely had time to cover everything but we did talk about the three primary ways to do interop in managed applications. Namely, P/Invoke, COM interop, and C++/CLI. The majority of the day was dedicated to P/Invoke, and we saw how to pass structures, arrays, and even delegates/function pointers across the interop boundary. We also discussed asynchronous P/Invoke callbacks which introduce difficulties in pinning and retaining objects that are still pointed to by unmanaged code.
The slides and demos from the interop day are available here.
Thanks everyone for coming, and I’m looking forward to seeing you at the next SDP!
I am posting short links and updates on Twitter as well as on this blog. You can follow me: @goldshtn