Ao testar cargas de trabalho Mono / Linux vs .NET / Windows, é preciso lembrar que há mais em ação do que apenas o ambiente de tempo de execução.
Existem áreas nas quais o Linux tem um desempenho melhor que o Windows (a maioria das operações de IO e de rede tendem a ser mais rápidas para programas C semelhantes). Ao mesmo tempo, o .NET possui um coletor de lixo mais avançado e um compilador JIT mais avançado.
Quando se trata das bibliotecas de classes, realmente depende de quais caminhos de código você está usando. Como JacksonH disse em um post anterior, você pode clicar nos caminhos de código que foram otimizados em uma implementação, mas não no outro, e vice-versa.
Em cargas de trabalho do ASP.NET, é preciso lembrar que a configuração padrão encaminhará todos os pedidos recebidos para um único processo "trabalhador", mod_mono e Cherokee usam uma abordagem semelhante:
Pelo menos com o Apache, oferecemos suporte a um mecanismo no qual você pode dividir cargas de trabalho de aplicativos em vários funcionários, o que ajuda em cargas altas, pois evita bloqueios durante o processo e oferece a cada trabalhador um conjunto inteiro de threads:
Solicitações de roteamento para hosts ASP.NET diferentes com mod_mono http: // mono-project .com / arquivos / 9 / 9b / Modmono-multiple-servers.PNG Os detalhes sobre como configurar esta configuração estão disponíveis aqui: