Last time, I unveiled my multithreaded brute force NTLM hash cracker written in C#. However, I was not very happy with the performance... specifically the scalability... it has some pretty massive concurrency issues that are apparent when executing on a machine with lots of processors. For instance, the program barely ran any faster on a machine with 8 CPUs than it did on a machine with 4 relatively slower CPUs. There is obviously a big threading issue there causing a problem with diminishing returns.
Now don't get me wrong - I love C#, but I had a hunch that if I wanted to be serious about performance I needed to go native. So I spent about a day porting it to standard C, and now both single-threaded and mult-threaded performance is about seven times better than in C#. Again, I'm not bashing C#, it's just that different types of problems call for different types of tools. And like I said last time, I realize there already several other apps out there that do this, but I've taught myself a lot of C doing this, which makes it worth it to me.
As usual, you can view the source on Github if you're interested.