To add to this, Mono .NET supports SSE compiler intrinsics, which, if used property (and this is the kicker) can get close to the performance of C++ for game maths. That being said, they're only currently supported on Linux and Mac (no SmartPhones, sadly), and unless you use the Mono.Simd vector types directly (can't wrap into custom struct) your performance drops significantly. The big problem with this is that some common operations are not supported on these:
Originally Posted by ciplogic
That being said, if you are willing to live with the quarks and limitations, vector math written with Mono.Simd on Linux/Mac runs ~2-6 times faster (depending on the CPU) than anything MS .NET on Windows can dish out, and gets similar (be not quite as much) performance as native C/C++ applications in this area. SIMD operations are a game changer for Games, so it's nice to note that on Linux, games written with .NET have a distinct advantage.
Vector4f a; // Mono.Simd vector type
a *= 5; // works
a += 5; // doesn't work
a += new Vector4f(5); // works