Cita:
Iniciado por lareto Un programa C++ compilado y linkado es código máquina. No hay nada "intermedio".
En el caso de C#, si bien el ejecutable es una suerte de código intermedio, el código se va compilando bajo demanda. La ventaja que tiene este sistema es que se puede generar código optimizado según el procesador concreto que estés usando, cosa que con C++ no puedes hacer.
Otro punto en contra que tiene C++ es que al dar tanta libertad al programador, al final se acaban originando auténticos desastres:
* Paso de objetos grandes por valor
* Uso ineficiente de reservas / liberaciones de memoria
* Lagunas de memoria
Sin embargo, en el caso de C#, al no darte acceso directo a la memoria, te permite crear programas mucho más limpios.
Si bien es cierto que en programas más o menos pequeños es relativamente sencillo hacer aplicaciones en C++ más rápidas que en C#, en aplicaciones grandes estos márgenes se diluyen hasta casi desaparecer... incluso te puedes encontrar arquitecturas C# más rápidas que su homólogo en C++... cosas del diseño.