There's a lot of good information in both the articles and the reader comments, and if you've got the time they're well worth studying for hints on how to write and benchmark high-performance code. The summary is a compelling argument for .NET:

A line-for-line translation of the original C++ code into C# ran 10 times faster than the C++ code.

It took five different optimizations (one of which introduced a bug) for the C++ code to match the speed of the unaltered C# code.

After Raymond's sixth optimization, his C++ code finally beat the C# code — because the runtime got down to where the 60ms startup overhead of the CLR made a difference!

To accomplish this, Raymond had to:

Write his own file/io stuff

Write his own string class

Write his own allocator

Write his own international mapping

So yes, C++ code can be faster than C# code — but when you look at all the work Raymond had to go through to achieve that, you have to ask yourself "is it worth it?"

I must say the way raymond uses C++ strikes me as odd.. more like C with some stuff.

A struct of wstrings in a vector was too slow; so instead he jumped to storing wchar arrays I believe; why? He could’ve just made the struct a pointer in the first place. Or the wstrings pointers for that matter.

He also didnt reserve a decent sized vector up front, nor did he think to use a boost memory pool for the wstrings or similar approaches; He choose to go lowlevel, even though theres vastly superior options available.