Généralement, C# et Java peuvent être tout aussi rapide ou plus rapide parce que le compilateur JIT -- d'un compilateur compile votre IL la première fois qu'il est exécuté, peut faire des optimisations que C++ compilé le programme ne peut pas car il peut interroger la machine. Il peut déterminer si la machine est Intel ou AMD; Pentium 4, Core Solo, ou Core Duo; ou si les supports SSE4, etc.
Un programme C++ doit être compilé à l'avance généralement mélangé avec des optimisations pour qu'il fonctionne décemment bien sur toutes les machines, mais n'est pas optimisé autant qu'elle pourrait l'être pour une seule configuration (c'est à dire processeur jeu d'instructions, d'autres matériels).
En outre, certaines des fonctionnalités du langage qui permettent au compilateur C# et Java pour faire des hypothèses à propos de votre code qui permet d'optimiser certaines parties de l'écart qui ne sont pas seulement sans danger pour le compilateur C/C++ pour le faire. Lorsque vous avez accès à des pointeurs, il y a beaucoup d'optimisations qui ne sont pas à l'abri.
Aussi Java et C# peut faire des tas allocations de manière plus efficace qu'en C++ parce que la couche d'abstraction entre le garbage collector et votre code permet de faire tout son tas de compression à la fois (assez cher).
Maintenant, je ne peux pas parler pour Java sur ce point suivant, mais je sais que C# par exemple enlever les méthodes et les appels de méthode quand on sait que le corps de la méthode est vide. Et il va utiliser ce type de logique tout au long de votre code.
Donc, comme vous pouvez le voir, il ya beaucoup de raisons pourquoi certains C# ou Java implémentations sera plus rapide.
Maintenant, ceci dit, les optimisations spécifiques peuvent être réalisés en C++ qui va souffler tout ce que vous pourriez faire avec C#, en particulier dans le graphique ci-domaine et n'importe quand vous êtes proches du matériel. Les pointeurs de faire des merveilles ici.
Donc, en fonction de ce que vous écrivez je voudrais aller avec l'un ou l'autre. Mais si vous écrivez quelque chose qui n'est pas dépendant du matériel (driver, jeu vidéo, etc), je ne voudrais pas vous soucier de la performance de C# (encore une fois ne peut pas parler de Java). Il va faire tout aussi bien.
Un Java côté, @Swati points, un bon article:
http://www-128.ibm.com/developerworks/java/library/j-jtp09275.html?ca=dgr-jw22JavaUrbanLegends