C# versus C++ en vitesse d'exécution dans quels cas sont ils les plus rapides ?
David Bolton effectue un cas particulier de micro benchmark avec les deux langages
Généralement C++ est reconnu comme étant un des langages les plus rapide en vitesse d'exécution. David Bolton se présente comme un développeur expérimenté et il est le fondateur de la société Bespoke Programmers qui a longtemps travaillé avec les langages C# et C++. Dans une de ses publications, il s’est intéressé à la vitesse d’exécution de ces deux langages pour déterminer lequel était plus rapide que l’autre. Pour ce faire, il a écrit un programme en C++ qu’il a ensuite traduit en C# et comparé les deux versions du programme à leur exécution. La comparaison des temps d’exécution des deux versions du programme a montré que la version C# s’est exécutée deux fois plus vite que la version C++, ce à quoi il ne s’attendait pas. En effet, avec les nouvelles versions de C++, le langage est devenu beaucoup plus puissant avec des ajouts de nouvelles fonctionnalités. Celles-ci couplées au fait que C++ utilise des caractères codés sur 8 bits alors que C# utilise des caractères codés sur 16 bits, David croyait qu’il serait plus rapide à l’exécution. Cependant il s’est rendu compte que C# pouvait être aussi rapide, voire plus si on fait les bonnes optimisations.
Pour mieux nous faire comprendre, David nous fait entrer dans son code pour en expliquer le principe. Le programme en question, écrit en C++ crée un fichier texte générant automatiquement des cartes de poker représentées par deux caractères chacune (exemple : DP = Dame de Pique). Le programme lit ensuite les données de ce fichier et écrit le temps mis dans un autre fichier (10 caractères par ligne). Cela a pris 3.5 secondes au programme écrit en C++ pour finir de lire le fichier entier qui contient la représentation d’un million de cartes. La version C# du même code a pris seulement 1,7 seconde pour s’exécuter soit une vitesse d’exécution deux fois plus grande que la version C++.
On ne peut cependant pas déduire une généralité pour une comparaison en se basant sur ce seul micro benchmark comme il semble vouloir le faire penser, pouvez-vous expliquer pourquoi vous êtes de son avis, ou d'un avis contraire ?
Sources : Code source sur github & Article sur Dice
Et vous ?
Pensez-vous que C# peut être parfois plus rapide dans certains cas que C++, ou dans quels cas C# peut être plus rapide que C++ d'après votre expérience personnelle ?
Avez-vous des benchmarks ou des micro benchmarks à proposer qui montrent dans quel cas C++ ou C# sont les plus rapides ?
Voir aussi
le forum Langage de programmation
la rubrique générale Développement
Partager