Slides from the Second Jerusalem .NET/C++ User Group Meeting

May 30, 2012

Yesterday we hosted the second meeting of the Jerusalem .NET/C++ User Group. We have a temporary website now, which I encourage you to bookmark to stay up to date with the group’s meetings. (I will also post any news to my blog, of course.) The two presentations from the event are below. They were deep technical talks, and I strongly recommend that you peruse the links sprinkled throughout the slides for a deeper understanding of the topics. Portable Lock-Free Use of STL Containers Visual Studio Native Undocumented Debugging Tricks Thanks everyone...
tags: ,
no comments

Performance Gains with Data Parallelism: Using SIMD Instructions from C#

May 24, 2012

This is a short excerpt (with slight modifications) from Chapter 10 of Pro .NET Performance, scheduled to appear in August 2012. I might be publishing a few more of these before and after the book is out. Theoretically, .NET developers should never be concerned with optimizations tailored to a specific processor or instruction set. After all, the purpose of IL and JIT compilation is to allow managed applications to run on any hardware that has the .NET Framework installed, and to remain indifferent to operating system bitness, processor features, and instruction sets. However, squeezing the last bits of...

Obtaining mscordacwks.dll for CLR Versions You Don’t Have

May 19, 2012

Note: This blog post assumes that you can capture and analyze managed dumps in WinDbg using SOS, and have encountered a bizarre technical problem when using dumps from a production environment. If this assumption is incorrect, feel free to peruse my .NET Debugging Resources link post. When debugging managed dumps in WinDbg, you will need to load the SOS version that is compatible with the CLR version in the dump. SOS, in turn, requires the CLR “data access DLL” (mscordacwks.dll), which is a debugging helper shipping with the .NET Framework. If SOS and/or mscordacwks.dll are missing or have...

“Fitting” Performance into the Software Development Lifecycle

May 13, 2012

This is a short excerpt from Chapter 1 of Pro .NET Performance, scheduled to appear in August 2012. I might be publishing a few more of these before and after the book is out. We have an Amazon page and a cover image now! Where do you fit performance in the software development lifecycle? This innocent question carries the mind baggage of having to retrofit performance into an existing process. Although it is possible, a healthier approach is to consider every step of the development lifecycle an opportunity to understand the application’s performance better—first, the performance goals and...

Pinpointing Memory Leaks with CLR Profiler Heap Graphs

May 4, 2012

CLR Profiler is a free Microsoft tool for diagnosing memory-related performance problems in managed applications. In this post, I’m using CLR Profiler v4.0, which you can download here. I talked about CLR Profiler here as a post-mortem diagnostic tool that can open log files generated by SOS.dll’s !TraverseHeap command and present a reference graph of all live objects. This in itself is a little-known feature of CLR Profiler; it is even less known that CLR Profiler can generate these reference graphs live, and compare them automatically to show you where a memory leak is coming from. All...
no comments

Setting Up an Offline Production Debugging Environment

May 2, 2012

If you’re doing production debugging in a closed environment—closed-down servers with no Internet access, or if you work at an institution that doesn’t have unrestricted Internet access from developer machines, this post will help you set up an offline production debugging environment. Incidentally, this post will also help if you’re going to host SELA’s .NET Debugging or C++ Debugging courses, and want to make sure your workstations are ready for the numerous hands-on labs. First and foremost, you are going to need all the tools you plan using for production debugging. At the very least, this includes: ...
one comment