En tenant compte de toutes les mises en garde évidentes liées aux repères et à la comparaison des repères, existe-t-il une étude (une série de tests bien documentés et non biaisés) comparant la vitesse d'exécution moyenne des deux langues mentionnées? Merci
Réponses
Trop de publicités?La meilleure comparaison que je suis conscient, c'est La Langue de l'Ordinateur de Repères de Jeu.
Il compare la vitesse, l'utilisation de la mémoire et de la taille du code source pour (actuellement) 11 repères à travers un grand nombre de langages de programmation. La mise en œuvre des critères de référence sont soumis par l'utilisateur et il y a continouous améliorations, de sorte que le classement de bouger un peu.
Toutes les comparaisons sont faites sur Linux, donc c'est C#/Mono qui est mesurée et non pas C#/Microsoft.NET. Mais mon impression, c'est que ces deux sont comparables à la vitesse de nos jours.
Java est actuellement de gagner de la vitesse, mais C#/Mono est une victoire sur l'utilisation de la mémoire., mais notez que, pour une raison quelconque, les implémentations Java sont multithread, alors que la plupart de la C#/Mono implémentations sont single thread.
Voici une belle étude récente sur le sujet:
Performances numériques en C, C # et Java
Peter Sestoft (sestoft@itu.dk)
Université informatique de Copenhague au Danemark
Version 0.9.1 du 2010-02-19
Résumé: Nous comparons les performances numériques de C, C # et Java sur trois petits cas.
...
Cela pourrait inviter un troll, mais bon, c'est mon avis...
Tout d'abord, si votre site fonctionne trop lentement, vous aurez besoin d'un meilleur matériel. Ou plus de matériel et d'équilibrage de charge à votre site. Si vous êtes à la Google, vous vous retrouverez avec d'énormes fermes de serveurs avec des milliers de machines qui semblent fournir une performance ultra-rapide, même si les sites se sont développés dans certaines dépassée de la langue.
La plupart des langues ont été optimisés pour obtenir le meilleur de leur matériel et de se surpasser toute autre langue dans cet environnement spécifique, avec une installation spécifique. La comparaison des langues ne fait pas beaucoup de sens, car il ya des milliers de techniques afin d'optimiser encore plus. D'ailleurs, comment mesurez-vous la performance de commencer avec?
Disons que vous regardez la vitesse d'exécution. Le langage X peut effectuer une certaine tâche 2 fois plus rapide que la langue Y. Toutefois, la langue Y est plus optimisé pour l'exécution de plusieurs threads et pourrait servir 10 fois plus d'utilisateurs que le langage X dans le même laps de temps. Combinez cela et Y serait beaucoup plus rapide dans un environnement client/serveur.
Mais ensuite installer X sur un système optimisé avec un système d'exploitation X aime beaucoup, avec du matériel supplémentaire, un gadzillion octets de mémoire et d'espace disque et une douzaine d'CPU et X s'Y battre à nouveau.
Alors, quelle est la valeur de la connaissance de la vitesse d'exécution de langues? Ou même la comparaison des langues? Comment savons-nous que ceux qui ont créé le rapport n'était pas biaisée? Comment pouvons-nous assurer qu'ils ont utilisé la plupart des paramètres optimaux pour chaque langue? Ont-ils même d'en écrire de la façon la plus optimale code à tester? Et comment voulez-vous comparer les résultats finaux de toute façon? Le temps d'exécution par l'utilisateur? Ou de temps d'exécution total?
De retour de langues X et Y. X exécute une tâche en 2 secondes, mais il ne supporte que 10 threads en même temps, donc 10 utilisateurs. Y a besoin de 6 secondes, mais sert à 50 threads en même temps. X serait plus rapide par l'utilisateur. En deux secondes, X a traité 10 utilisateurs. En 6 secondes, X a traité 30 utilisateurs. Mais Y aurait traité de 50 utilisateurs en ce moment. Donc Y serait mieux que les X lorsque vous avez beaucoup d'utilisateurs, tandis que X serait plus performant que Y avec un faible nombre d'utilisateurs. (Ou threads.) Il serait intéressant de voir les rapports de la mention de cette, droite?