Hi, Walter.
>Not knowing the very details of it, AFAIK, the CLR is a type of interpreter (just like VFP use the pcode interpreter). I understand that there is a difference in the aspects that when it is translating into a lower level code, but still it is a engine that translates the high level instructions into highly efficient low level library of functions.
No, it is not. As Markus said, .NET actually compiles the IL code before running it, making all sort of optimizations for the target system. So you are achieving most of a regular C++ compiler optimizations can do, BUT on a per-run basis. Just for some circumstances in which you even need to get rid of the compilation time (and believe me it is blazingly fast), and providing your system will keep quite stable over time, you can compile permanently (well, until you want to do it again) to native code.
As several other pointed out, lots of benchmarking has been done, and .NET beats native unmanaged code in almost every test. Of course, there are some things -very few- in which unmanaged still performs better.
Regards,