で書かれた2つの(ちょっと)hello worldプロジェクトで簡単なストレステストをしています node.js そして asp.net-core。どちらもプロダクションモードで実行されており、ロガーが接続されていません。結果は驚くべきものです!ASP.NETコアは、node.jsアプリが単にビューをレンダリングしているのに対して、追加の作業を行った後でもnode.jsアプリよりも優れています。
アプリ1: http://localhost:3000/nodejs
node.js
使用:node.js、ExpressおよびVashレンダリングエンジン。
このエンドポイントのコードは
router.get('/', function(req, res, next) {
var vm = {
title: 'Express',
time: new Date()
}
res.render('index', vm);
});
ご覧のとおり、現在の日付をtime
変数経由でビューに送信する以外は何もしません。
アプリ2: http://localhost:5000/aspnet-core
asp.net core
使用:ASP.NET Core、デフォルトのテンプレートターゲティングdnxcore50
ただし、このアプリは、日付が表示されているページをレンダリングするだけではありません。さまざまなランダムテキストの5つの段落を生成します。これにより、理論的には、nodejsアプリよりも少し重くなるはずです。
このページをレンダリングするアクションメソッドは次のとおりです
[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();
}
ストレステスト結果
Node.jsアプリのストレステスト結果
使用する npm install -g recluster-cli && NODE_ENV=production recluster-cli app.js 8
ASP.NET Coreアプリのストレステスト結果
私の目が信じられない!この基本的なテストでは、asp.netコアがnodejsよりもはるかに高速であるとは言えません。もちろん、これはこれら2つのWebテクノロジー間のパフォーマンスを測定するために使用される唯一のメトリックではありませんが、node.js側で何が問題になっているのでしょうか?。
プロのasp.net開発者であり、個人プロジェクトでnode.jsを適合させたいと思っているので、これは私を少し先延ばしにしています-パフォーマンスについて少し偏執的だからです。node.jsはasp.netコアよりも高速だと思いました(一般に-他のさまざまなベンチマークで見られるように)自分で証明したいだけです(node.jsの適応を促進するため)。
さらにコードスニペットを含める場合は、コメントで返信してください。
更新: .NET Coreアプリの時間分布
サーバーの応答
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