In my experience, .NET is 2 to 3 times slower than native code. (I implemented L-BFGS for multivariate optimization).
I have traced the ads on stackoverflow to http://www.centerspace.net/products/
the speed is really amazing, the speed is close to native code. How can they do that? They said that:
Q. Is NMath "pure" .NET?
A. The answer depends somewhat on your definition of "pure .NET". NMath is written in C#, plus a small Managed C++ layer. For better performance of basic linear algebra operations, however, NMath does rely on the native Intel Math Kernel Library (included with NMath). But there are no COM components, no DLLs--just .NET assemblies. Also, all memory allocated in the Managed C++ layer and used by native code is allocated from the managed heap.
Can someone explain more to me?
The point about C++/CLI is correct. To complete the picture, just two additional interesting points:
.NET memory management (garbage collector) obviously is not the problem here, as NMath still depends on it
The performance advantage is actually provided by Intel MKL, which offers implementations extremely optimized for many CPUs. From my point of view, this is the crucial point. Using straight-forward, naiv C/C++ code wont necessarily give you superior performance over C#/.NET, it's sometimes even worse. However C++/CLI allows you to exploit all the "dirty" optimization options.