Le Web regorge de différentes sortes de tests de performance de différentes langues, compilateurs et machines virtuelles. Pourtant, pratiquement aucun de ces tests les performances en utilisant un scénario du monde réel. En outre, la recherche de Google de ce type de référence donne généralement seulement plusieurs points de repère d'années d'âge que ceux qui ont le plus de temps pour les collecter des liens. P>
Est-ce que vous avez un réel aperçu de la performance actuelle de différentes machines virtuelles? En outre, je voudrais surtout savoir comment les performances de Mono se compare à celles de Microsoft .NET et Sun's Java et comment la performance de différentes machines virtuelles a évolué ces derniers temps. P>
5 Réponses :
Pour une comparaison de Java et Mono, vous pouvez regarder The Computer Language Benchmarks Game . P>
Je ne vois aucun signe du réel .NET VM sur cette liste?
Puisqu'il ne fonctionnera pas sur Linux. Mais c'est pourquoi j'ai limité ma réponse à Mono et Java.
Pendant que je n'ai pas utilisé Mono, je suppose que cela dépend de ce que vous faites avec cela. Je ne peux pas vous donner des chiffres exacts sur les choses, mais voici une tirée intéressante sur les performances ponctuelles flottantes de Mono: P>
http://forums.xna.com/forums/p/24249 /24249.aspx P>
Comme mono permet d'utiliser les instructions de la SIMD de votre CPU (SSE2 et SSE4 pour le moment, je crois) à accélérer considérablement les calculs de points flottants, il peut s'éloigner de .NET à ce genre de chose (jusqu'à 10 fois plus vite), Comme le montre le graphique (et j'espère que Microsoft implémentera quelque chose de similaire, .NET 4.5, s'il vous plaît?). Cependant, le graphique montre également que .NET est toujours significativement plus rapide que mono lorsqu'il n'utilise pas mono.SIMD. Et vous êtes pourriez-vous EM> prendre un énorme saut de foi et extrapoler cette différence de 20% de performances ponctuelles flottantes vers d'autres zones, telles que la performance de la chaîne. p>
Cependant, c'est-à-dire mono 2.2 et que les choses ont peut-être changé radicalement lorsque mono se déplace assez vite ces jours-ci, alors j'entends. p>
La performance de Mono est affreuse et s'est améliorée légèrement et une fois toute sa vie (avec mono 2.2).
La performance de mesure est une question compliquée. Dans le passé, lorsque des langues ont été testées contre le même système d'exploitation, exécutez le même matériel et un ensemble de bibliothèques très limitée, il a été possible de créer des points de repère pouvant donner une métrique linéaire qui mesurerait un système. Il laisserait les gens évaluer les choses de zéro à dix, assimiler le résultat et passer rapidement au sujet suivant. P>
Les choses sont devenues plus compliquées avec les systèmes modernes car il existe plusieurs variables à prendre en compte. p>
Au moins dans le cas de Mono, il y a beaucoup de variables qui entrent en jeu: p>
code: p>
Gestion de la mémoire: P>
Design API: P>
Toutes ces choses compliquent beaucoup de choses et font une simple réponse de 0 à 10 très difficile à donner. P>
Si vous deviez partitionner des langues dans des classes et que vous assumez un programmeur compétent et de performance, je diviserais le monde dans ces classes: p>
Mais les langues ne peignent pas une image entière, les API que vous consommerez, le système d'exploitation d'hébergement et d'autres installations auront un impact important sur vos résultats. p>
Par exemple, récemment dans Mono, nous avons ajouté une assistance pour remplacer le moteur Gén de code de Mono avec un moteur plus avancé et hautement optimisant (le moteur LLVM). Il s'avère que c'était incroyablement difficile de trouver un test où les frais généraux d'utilisation de LLVM valaient la valeur supplémentaire: les applications de bureau et Web n'ont pas présenté une grande partie de la différence. Et cela est probablement dû au fait que ceux-ci sont principalement des applications liées aux E / S. p>
Utiliser LLVM a été utile pour des applications intensifs scientifiques et informelles, mais dans la vie réelle, cela n'a pas apporté une grande partie des paramètres d'optimisation par défaut de Mono. P>
Quant aux détails de Mono: Bien que mono utilise le GC de Boehm, ce que la plupart des gens ne réalisent pas, c'est que Boehm peut être configuré de différentes manières. La configuration Layman par défaut n'est en effet pas très puissante, mais cela fonctionne pour tout le monde qui veut un GC rapide. Mono n'utilise pas BOEHM dans ce mode, la mono configure de manière approfondie Boehm de travailler en mode précis, tout en tirant parti des modes de stockage locaux, de gc multicœurs et de la mémoire à la mémoire à la mémoire à la mémoire. p>
Merci Miguel mais ce que vous n'avez pas osé devait donner des mesures de performance réelles du monde. Ce serait particulièrement intéressant serait la performance de ASP.NET MVC sur mono versus rubis sur rails / CakePHP / etc. en cours d'exécution sur le même serveur.
Vous devez savoir ce que vous testez. Si vous avez deux applications similaires, une en mono avec ASP.NET MVC et une avec des rails / CakePHP, je peux les essayer et signaler les résultats. Si le code est informellement intensif, Mono sera plus rapide, simplement parce qu'il a une JIT pour un système fortement saisi. Si le code est io-lié, cela dépendra vraiment de la manière dont le code a été écrit.
Je sais que c'est vieux, mais je viens de le trouver et aucune des réponses actuelles (même de Miguel) adresse une faille fondamentale dans votre question: une machine virtuelle. P>
Vous semblez être mal informés sur ce point. .NET n'utilise pas de VM, et non plus mono. Il est vrai que .NET utilise une bibliothèque Runtime em>, et le code compile à IL pour un déploiement similaire à celui de Java's Bytecode. Cependant, un runtime n'est pas une machine virtuelle. La différence est que, après le déploiement, l'IL est lui-même entièrement compilé au code de machine natif avant l'exécution. Aucune machine virtuelle n'a besoin d'appliquer. P>
i Benchmarked mono 2.0 et 2.2 plus tôt cette année en utilisant < un href = "http://math.nist.gov/scimark2/" rel = "Nofollow NOREFERRER"> scimark2 et a constaté que la performance de Mono avait légèrement augmenté, mais il est encore beaucoup plus lent que la plupart des autres VMS. p>
C'est Mono i> Augmentation de la journée au jour de la journée :). Aucune idée en termes absolus.