I am doing a quick stress test on two (kinda) hello world projects written in node.js and asp.net-core. Both of them are running in production mode and without a logger attached to them. The result is astonishing! ASP.NET core is outperforming node.js app even after doing some extra work whereas the node.js app is just rendering a view.
App 1: http://localhost:3000/nodejs
node.js
Using: node.js, express and vash rendering engine.
The code in this endpoint is
router.get("https://stackoverflow.com/", function(req, res, next) {
var vm = {
title: 'Express',
time: new Date()
}
res.render('index', vm);
});
As you can see, it does nothing apart from sending current date via the time
variable to the view.
App 2: http://localhost:5000/aspnet-core
asp.net core
Using: ASP.NET Core, default template targeting dnxcore50
However this app does something other than just rendering a page with a date on it. It generates 5 paragraphs of various random texts. This should theoretically make this little bit heavier than the nodejs app.
Here is the action method that render this page
[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();
}
Stress test result
Node.js App stress test result
Update: Following suggestion by Gorgi Kosev
Using npm install -g recluster-cli && NODE_ENV=production recluster-cli app.js 8
ASP.NET Core App stress test result
Can’t believe my eyes! It can’t be true that in this basic test asp.net core is way faster than nodejs. Off course this is not the only metric used to measure performance between these two web technologies, but I am wondering what am I doing wrong in the node.js side?.
Being a professional asp.net developer and wishing to adapt node.js in personal projects, this is kind of putting me off – as I’m a little paranoid about performance. I thought node.js is faster than asp.net core (in general – as seen in various other benchmarks) I just want to prove it to myself (to encourage myself in adapting node.js).
Please reply in comment if you want me to include more code snippets.
Update:
Time distribution of .NET Core app
Server response
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