The investment in optimization in CLR or JVM can be huge as they impact millions of applications. While each C / C++ code will have to be hand optimized.
Also limits on number of people in given time who can write optimal C code vs C# will also make managed code better.
Also limits on number of people in given time who can write optimal C code vs C# will also make managed code better.