Robię szybki test warunków skrajnych na dwóch (trochę) napisanych projektach Hello World node.js i asp.net-core. Oba działają w trybie produkcyjnym i bez dołączonego do nich loggera. Rezultat jest zdumiewający! ASP.NET core przewyższa aplikację node.js nawet po wykonaniu dodatkowej pracy, podczas gdy aplikacja node.js po prostu renderuje widok.
Aplikacja 1: http://localhost:3000/nodejs
node.js
Wykorzystanie : node.js, express i vash renderowania silnika.
Kod w tym punkcie końcowym to
router.get('/', function(req, res, next) {
var vm = {
title: 'Express',
time: new Date()
}
res.render('index', vm);
});
Jak widać, nie robi nic poza wysłaniem aktualnej daty przez time
zmienną do widoku.
Aplikacja 2: http://localhost:5000/aspnet-core
asp.net core
Używanie : ASP.NET Core, domyślne kierowanie na szablondnxcore50
Jednak ta aplikacja robi coś innego niż tylko renderowanie strony z datą. Generuje 5 akapitów różnych losowych tekstów. Powinno to teoretycznie uczynić to nieco cięższym niż aplikacja nodejs.
Oto metoda akcji, która renderuje tę stronę
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
[Route("aspnet-core")]
public IActionResult Index()
{
var sb = new StringBuilder(1024);
GenerateParagraphs(5, sb);
ViewData["Message"] = sb.ToString();
return View();
}
Wynik testu wysiłkowego
Wynik testu warunków skrajnych aplikacji Node.js.
Aktualizacja: zgodnie z sugestią Gorgi Koseva
Za pomocą npm install -g recluster-cli && NODE_ENV=production recluster-cli app.js 8
Wynik testu warunków skrajnych aplikacji ASP.NET Core
Nie mogę uwierzyć własnym oczom! Nie może być prawdą, że w tym podstawowym teście rdzeń asp.net jest znacznie szybszy niż nodejs. Oczywiście nie jest to jedyna miara używana do pomiaru wydajności między tymi dwoma technologiami sieciowymi, ale zastanawiam się, co robię źle po stronie node.js? .
Będąc profesjonalnym programistą asp.net i chcącym adaptować node.js w osobistych projektach, trochę mnie to zniechęca - ponieważ jestem trochę paranoikiem co do wydajności. Myślałem, że node.js jest szybszy niż rdzeń asp.net (ogólnie - jak widać w różnych innych testach porównawczych), po prostu chcę to sobie udowodnić (aby zachęcić się do adaptacji node.js).
Proszę o odpowiedź w komentarzu, jeśli chcesz, żebym dołączył więcej fragmentów kodu.
Aktualizacja: rozkład czasu aplikacji .NET Core
Odpowiedź serwera
HTTP/1.1 200 OK
Cache-Control: no-store,no-cache
Date: Fri, 12 May 2017 07:46:56 GMT
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
Server: Kestrel