Il n'y a pas de stricte raison pour laquelle un code binaire en fonction des langages comme le C# ou Java, qui a une équipe commune d'enquête ne peut pas être aussi rapide que du code C++. Cependant, C++ code utilisé pour être beaucoup plus rapide pour une longue période de temps, et aussi, aujourd'hui encore, dans beaucoup de cas. Ceci est principalement dû à la plus avancée optimisations JIT être compliqué à mettre en œuvre, et la vraiment cool, n'arrivant tout à l'heure.
C++ est plus rapide, dans de nombreux cas. Mais ce n'est qu'une partie de la réponse. Le cas où C++ est en fait plus rapide, sont hautement optimisé programmes, où les programmeurs experts soigneusement optimisé l'enfer hors du code. Ce n'est pas seulement beaucoup de temps (et donc cher), mais aussi souvent conduit à des erreurs dues à la sur-optimisation.
D'autre part, le code dans des langages interprétés devient plus rapide dans les dernières versions du moteur d'exécution (.NET CLR ou de la machine virtuelle Java), sans que vous fassiez quoi que ce soit. Et il y a des tas d'optimisations compilateurs JIT pouvez faire qui sont tout simplement impossible dans les langues avec des pointeurs. En outre, certains prétendent que la collecte des ordures doit généralement être aussi rapide ou plus rapide que le manuel de gestion de la mémoire, et dans de nombreux cas, il est. Vous pouvez généralement mettre en œuvre et de réaliser tout cela en C++ ou en C, mais il va être beaucoup plus compliqué et source d'erreurs.
Comme Donald Knuth a dit, "l'optimisation prématurée est la racine de tout mal". Si vous savez vraiment pour vous assurer que votre demande sera consistent pour la plupart en très critique pour les performances de l'arithmétique, et qu'il sera le goulot d'étranglement, et il va certainement être plus rapide en C++, et vous êtes sûr que C++ n'entre pas en conflit avec d'autres exigences, optez pour C++. Dans les autres cas, se concentrer sur la première mise en œuvre de votre demande correctement dans la langue dans laquelle vous convient le mieux, puis de trouver les goulots d'étranglement des performances si elle est trop lente, et ensuite réfléchir à comment optimiser le code. Dans le pire des cas, vous pourriez avoir besoin de faire appel à du code C par l'intermédiaire d'un étranger interface de la fonction, de sorte que vous aurez toujours la possibilité d'écrire des critiques de pièces dans le langage de plus bas niveau.
Gardez à l'esprit qu'il est relativement facile d'optimiser un programme correct, mais beaucoup plus difficile à corriger un programme optimisé.
En donnant les pourcentages réels de vitesse avantages est impossible, il dépend en grande partie de votre code. Dans de nombreux cas, le langage de programmation de la mise en œuvre n'est même pas le goulot d'étranglement. Prendre des repères au http://shootout.alioth.debian.org/ avec beaucoup de scepticisme, comme ces en grande partie test arithmétique code, ce qui est le plus susceptible de ne pas similaire à votre code.