Lorsque vous testez des charges de travail Mono / Linux vs .NET / Windows, vous devez vous rappeler qu'il y a plus en jeu que l'environnement d'exécution.
Il existe des domaines dans lesquels Linux fonctionne mieux que Windows (la plupart des opérations IO et réseau ont tendance à être plus rapides pour des programmes C comparables). Dans le même temps, .NET dispose d'un garbage collector plus avancé et d'un compilateur JIT plus avancé.
En ce qui concerne les bibliothèques de classes, cela dépend vraiment des chemins de code que vous utilisez. Comme JacksonH l'a dit dans un article précédent, vous pouvez accéder à des chemins de code qui ont été optimisés dans une implémentation, mais pas dans l'autre, et vice versa.
Sur les charges de travail ASP.NET, vous devez vous rappeler que la configuration par défaut achemine toutes les demandes entrantes vers un seul processus "travailleur", mod_mono et Cherokee utilisent une approche similaire:
(source: mono-project.com )
Au moins avec Apache, nous prenons en charge un mécanisme où vous pouvez diviser les charges de travail des applications entre plusieurs travailleurs, ce qui aide sous des charges élevées car il évite tout verrouillage en cours et donne à chaque travailleur un pool de threads complet à partir duquel travailler:
(source: mono-project.com )
Les détails sur la façon de configurer cette configuration sont disponibles ici:
http://mono-project.com/Mod_mono