Wenn Sie Mono / Linux- oder .NET / Windows-Workloads testen, müssen Sie berücksichtigen, dass mehr im Spiel ist als nur die Laufzeitumgebung.
Es gibt Bereiche, in denen Linux eine bessere Leistung als Windows erbringt (die meisten E / A- und Netzwerkvorgänge sind bei vergleichbaren C-Programmen tendenziell schneller). Gleichzeitig verfügt .NET über einen erweiterten Garbage Collector und einen erweiterten JIT-Compiler.
Wenn es um die Klassenbibliotheken geht, hängt es wirklich davon ab, welche Codepfade Sie verwenden. Wie JacksonH in einem früheren Beitrag sagte, können Sie Codepfade aufrufen, die in einer Implementierung optimiert wurden, in der anderen jedoch nicht, und umgekehrt.
Bei ASP.NET-Workloads müssen Sie beachten, dass das Standard-Setup alle eingehenden Anforderungen an einen einzelnen "Worker" -Prozess weiterleitet. Mod_mono und Cherokee verwenden einen ähnlichen Ansatz:
(Quelle: mono-project.com )
Zumindest mit Apache unterstützen wir einen Mechanismus, mit dem Sie Anwendungs-Workloads auf mehrere Worker aufteilen können. Dies hilft bei hohen Lasten, da keine Prozesssperren auftreten und jedem Worker ein ganzer Thread-Pool zur Verfügung steht:
(Quelle: mono-project.com )
Einzelheiten zur Konfiguration dieses Setups finden Sie hier:
http://mono-project.com/Mod_mono