Este documento apresenta os resultados de um benchmark que comparou o desempenho do ASP.NET Core e do Node.js. O ASP.NET Core mostrou ser até 3 vezes mais rápido que o Node.js para requisições que não envolvem I/O e até 5 vezes mais rápido para requisições com I/O. Isso se deve ao fato de que o Kestrel, o servidor web do ASP.NET Core, usa o Libuv para I/O assim como o Node.js, mas também aproveita o código gerenciado .NET para outras operações.
2. WALDYR FELIX
Arquiteto Líder no Time de Operações
Críticas & Consultoria da FCamara
Microsoft MVP desde 2012
Fundador do Grupo ASP.NET Brasil
Blog: waldyrfelix.com.br
Twitter/LinkedIn/Snap: waldyrfelix
12. SERVIDOR WEB
.NET Core 1.0.0-rc2-3002702
ASP.NET Core 1.0.0-rc2-final
Kestrel 1.0.0-rc2-final
Node.js v6.2.1
Express 4.13.4
HTTP Server
Nativo
13. RESPONSE DO BENCHMARK
Idênticos para ASP.NET Core e Node.js
Retorna uma lista no formato JSON
api/benchmark/list
Retorna uma lista no formato JSON a
partir de um arquivo de texto em disco
api/benchmark/file
18. EXECUÇÃO DOS TESTES
Execução realizada por um
script bash
Usando a ferramenta wrk
Número de conexões
simultâneas
16, 32, 64, 128, 256, 512, 1024,
2048
Tempo de cada carga 10
segundos
26. PERFORMANCE DO LIBUV
É uma biblioteca para I/O assíncrono
Trabalha com single threaded event-loop
Ficou conhecida depois do Node.js
Uso eficiente de sockets assíncronos
Tem versões para Windows, OS X e Linux
Otimização de uso de CPU e memória
Melhora da performance em operações de
I/O
27. PERFORMANCE DO KESTREL
O Kestrel usa o Libuv assim como
Node.js
Mas apenas para operações de
I/O
Disco, serialização, rede, etc.
Para operações não I/O usa o
código gerenciado .NET
normalmente
Suporta múltiplos event-loop
Otimiza o número de chamadas