web-dev-qa-db-fra.com

Java vs C #: Existe-t-il des études qui comparent leur vitesse d'exécution?

En supprimant toutes les mises en garde évidentes liées aux benchmarks et à la comparaison des benchmarks, existe-t-il une étude (un éventail de tests bien documentés et impartiaux) qui compare la vitesse d'exécution moyenne des deux langages mentionnés? Merci

46
pistacchio

La meilleure comparaison que je connaisse est The Computer Language Benchmarks Game .

Il compare la vitesse, l'utilisation de la mémoire et la taille du code source pour (actuellement) 10 benchmarks sur un grand nombre de langages de programmation. Les implémentations des benchmarks sont soumises par les utilisateurs et il y a des améliorations continues, donc le classement change quelque peu.

La comparaison est actuellement openjdk vs C # .NET Core.

Actuellement, il est proche, mais .NET Core est légèrement plus rapide sur la plupart des benchmarks .

23
Rasmus Faber

Voici un Belle étude récente sur le sujet:

Performances numériques en C, C # et Java

Peter Sestoft ([email protected])

IT University of Copenhagen Danemark

Version 0.9.1 du 19/02/2010

Résumé: Nous comparons les performances numériques de C, C # et Java sur trois petits cas.

...

10
Ohad Schneider

Les deux langues évoluent en termes de performances. Au moins en 2013, le propre Joe Duffy de Microsoft blogué :

Java est plus proche [de C++ en termes de performances] que C # grâce à l'excellent travail des machines virtuelles de type HotSpot qui utilisent le pitch de code et l'allocation de pile.

6
Aleksandr Dubinsky

Cela pourrait inviter à une guerre des flammes, mais bon, c'est mon avis ...
Tout d'abord, si votre site est trop lent, vous aurez besoin d'un meilleur matériel. Ou plus de matériel et ajoutez l'équilibrage de charge à votre site. Si vous êtes Google, vous vous retrouverez avec d'énormes batteries de serveurs avec des milliers de machines qui sembleront fournir des performances ultra-rapides, même si les sites eux-mêmes sont développés dans un langage obsolète.
La plupart des langues ont été optimisées pour tirer le meilleur parti de leur matériel et surclasseront toute autre langue dans cet environnement spécifique avec une configuration spécifique. Comparer les langues n'aura pas beaucoup de sens car il existe des milliers de techniques pour les optimiser encore plus. D'ailleurs, comment mesurez-vous les performances pour commencer?
Disons que vous regardez la vitesse d'exécution. La langue X peut effectuer certaines tâches 2 fois plus rapidement que la langue Y. Cependant, la langue Y est plus optimisée pour exécuter plusieurs threads et peut servir 10 fois plus d'utilisateurs que la langue X dans le même laps de temps. Combinez cela et Y serait beaucoup plus rapide dans un environnement client/serveur.
.
Alors, quelle est la valeur de connaître la vitesse d'exécution des langues? Ou même la comparaison des langues? Comment savons-nous que ceux qui ont créé le rapport n'étaient pas partiaux? Comment sommes-nous sûrs qu'ils ont utilisé les paramètres les plus optimaux pour chaque langue? Ont-ils même écrit le code le plus optimal à tester? Et comment comparez-vous les résultats finaux de toute façon? Temps d'exécution par utilisateur? Ou le temps d'exécution total?
Retour aux langues X et Y. X exécute une tâche en 2 secondes mais il ne prend en charge que 10 threads en même temps, donc 10 utilisateurs. Y a besoin de 6 secondes mais sert jusqu'à 50 threads en même temps. X serait plus rapide par utilisateur. En deux secondes, X a traité 10 utilisateurs. En 6 secondes, X a traité 30 utilisateurs. Mais Y aurait traité 50 utilisateurs à ce moment-là. Ainsi, Y surpasserait X lorsque vous avez beaucoup d'utilisateurs, tandis que X surclasserait Y avec un faible nombre d'utilisateurs. (Ou fils.) Il serait intéressant de voir des rapports le mentionner, non?

4
Wim ten Brink