Mono performance
Existe-il des tests de performance pour les Mono par rapport à-dire de Java dans GNU/Linux?
Avez-vous déjà testé Mono performance?
- Quelqu'un pourrait-il revoir ce maintenant que C# 4.0 est sorti?
- J'ai fourni une mise à jour lien dans ma réponse que devrait rester au courant: stackoverflow.com/a/9138207/332026
- Les repères de jeu ne montrent Mono 2.10.9, qui fournit de C# 4.0, mais cela ne signifie pas que le C# programmes ont été ré-écrit pour l'utilisation de C# 4.0 caractéristiques.
Vous devez vous connecter pour publier un commentaire.
Il y a un post intéressant de Miguel sur cette.
(source: tirania.org)
Voir Les Détails Ici
La dernière version de ce shoot-out peuvent être trouvés ici.
En un mot, par rapport à Java, Mono utilise beaucoup moins de mémoire et exécute un peu plus lent.
Pour garder les choses en perspective, ils s'exécutent sur la même vitesse dans le grand schéma des choses. Ils ont tous les deux de l'exécution de ces tests ordres de grandeur plus rapide que les langages comme Ruby, LUA, Python, PHP et Perl. Ils sont tous les deux dans la même boule-parc de Pascal, OCaml, Haskell, LISP et qui en fait environ la moitié aussi rapide que le C et le C++. Cliquez sur ici pour plus de détails.
À pinailler, on devrait être clair que nos réponses ici de comparer Java et Mono C#. À la fois Mono et la JVM sont des environnements ciblés par les différentes langues et le choix de la langue des affaires. Par exemple, si nous comparons F# sur Mono avec Clojure sur la JVM nous obtenons des résultats totalement différents et tout à coup "Mono" est "plus rapide".
Bien que ces comparaisons sont intéressants et instructifs, vous devez les prendre avec un grain de sel. Tout d'abord, bien que certaines personnes le font, la plupart des gens, écrit en Java et C# code ne sont pas en cours d'exécution, mais rien d'algorithmes numériques en boucles serrées. Deuxièmement, dans certaines de ces langues, les algorithmes éprouvés peut-être juste d'appeler dans les bibliothèques écrites en C et non pas dans la langue cible à tous. Enfin, d'autres points de référence (et implémentations) serait susceptible de donner des résultats différents.
Encore, il est raisonnable d'inférer que Go est beaucoup plus rapide que Ruby, C++ est plus rapide que l'Aller, et Java et en C# exécuter assez raisonnable compte tenu de la façon dont ils sont productifs (à mon humble avis).
amazedsaint > Il y a un post intéressant de Miguel sur ce.
Ce graphique est de sortir de date!
Voici le courant Mono C# 4.0 comparaison
Je comparé Mono 2.2 à l'égard de diverses autres machines virtuelles, notamment OCaml, LLVM, .NET et Java:
Mono 2.2 vs OCaml vs .NET vs LLVM vs JDK http://2.bp.blogspot.com/_NMRkpon4Ps0/SYNY8YtzTCI/AAAAAAAAACg/Bkjli4JV-NU/s1600-h/scimark2_individual.gif
En résumé, Mono 2.2 est mieux que Mono 2.0, mais est en général toujours un beaucoup plus lent que presque tout le reste.
Mon indice de référence (à l'aide de problèmes mathématiques les plus complexes et de manipulation de la mémoire (avec chaînes brutes)):
MonoDevelop Windows (en cours d'exécution sur la console à l'aide .net 3.5):
Realizando cálculos em 1.000.000 itens 535...
Realizando operações com chaînes de longas... 2.038
Realizando cálculos em 1.000.000 itens 530...
Realizando operações com chaînes de longas... 1.962
Realizando cálculos em 1.000.000 itens 530...
Realizando operações com chaînes de longas... 1.963
À l'aide de mono.exe sur Windows:
Realizando cálculos em 1.000.000 itens... de 6,875
Realizando operações com chaînes de longas... 6.206
Realizando cálculos em 1.000.000 itens... 6.840
Realizando operações com chaînes de longas... 6.114
Realizando cálculos em 1.000.000 itens... 6.857
Realizando operações com chaînes de longas... 6.116
À l'aide de mono sous Linux Ubuntu:
Realizando cálculos em 1.000.000 itens... 5,934
Realizando operações com chaînes de longas... 6,915
Realizando cálculos em 1.000.000 itens... 6,034
Realizando operações com chaînes de longas... 7,489
Realizando cálculos em 1.000.000 itens... 5,740
Realizando operações com chaînes de longas... 6,731
Même code source, mais sur Visual Studio 2008:
Realizando cálculos em 1.000.000 itens... 588
Realizando operações com chaînes de longas... 1.289
Realizando cálculos em 1.000.000 itens... 566
Realizando operações com chaînes de longas... 1.320
Realizando cálculos em 1.000.000 itens... 702
Realizando operações com chaînes de longas... 1.393
VS 2008 exe généré avec NGEN (fichier exécutable natif):
Realizando cálculos em 1.000.000 itens... 567
Realizando operações com chaînes de longas... 1.255
Realizando cálculos em 1.000.000 itens... 563
Realizando operações com chaînes de longas... 1.269
Realizando cálculos em 1.000.000 itens... 562
Realizando operações com chaînes de longas... 1.263
Dans ces tests, le mono est 10x plus lent que .net 3.5 SP 1 =(
C++, C# (Mono), C et Vala: http://jpaflacerda.wordpress.com/2011/11/08/vala-benchmarking/
De nombreuses langues: http://attractivechaos.github.com/plb/
Conclusion: Mono ai beaucoup évolué, mais il est encore lent en comparaison avec les autres langues disponibles. Je me suis intéressé à Vala, qui a presque la même syntaxe de C#, mais est plus rapide que du C dans certains cas.
La plupart des cas-tests sont basés sur des gros calcul des boucles serrées. L'heure de début de comptage juste avant la boucle et arrêt juste après. Si votre demande est ce lourd traitement des données de l'éviter à la fois le C# et Java, il suffit d'aller pour le C/C++.
Il est plus probable que votre demande sera côté serveur. Qu'il devra accepter des requêtes d'extraction de données et l'envoyer de nouveau. Dans un tel scénario, la vitesse brute de code généré n'est pas pertinente par rapport à d'autres paramètres.
Vous feriez mieux de regarder quelle est l'efficacité de l'infrastructure sous-jacente, quelle est la vitesse de l'initialisation de la phase qui précède l'exécution de votre code, combien il est facile à mettre en œuvre efficace des technologies comme le non blocage I/O, la façon dont la mémoire est libérée et le processus recyclé après l'exécution de code. Comment est-il facile de déployer le code, le faire à l'échelle,...
L'homme paramètre est d'autant plus important que tout cela. Un mal écrit en Java est plus lent que le bon C# et vice versa. Donc vous devez vérifier vos développeurs. Qui langue-elles maître, qui l'outil aiment-ils mieux ? Sont-ils VS/resharper toxicomanes ou peuvent-ils utiliser Java IDE ? Le temps passé dans l'apprentissage de la nouvelle langue ou IDE ne sera pas consacré à la rédaction de mieux, de plus en plus de code optimisé.
J'ai vu un http://shootout.alioth.debian.org/gp4/csharp.php