我正在对两个(有点)hello world项目进行快速压力测试,它们都使用node.js和asp.net-core编写。它们都在生产模式下运行且没有附加日志记录器。结果令人惊讶!即使在执行一些额外工作后,ASP.NET Core的性能仍然优于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 应用的压测结果
更新: 根据Gorgi Kosev的建议
使用npm install -g recluster-cli && NODE_ENV=production recluster-cli app.js 8
ASP.NET Core 应用的压测结果
简直不敢相信!在这个基本的测试中,asp.net core比node.js快得多。当然,这不是衡量这两种Web技术性能的唯一标准,但我想知道我在node.js方面做错了什么?。
作为一名专业的asp.net开发人员,希望将node.js应用于个人项目,这让我有些失落——因为我对性能有点儿偏执。我以为node.js比asp.net core更快(通常情况下——正如在其他各种基准测试中所看到的)。我只是想向自己证明这一点(以鼓励自己采用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