Я делаю быстрый стресс-тест на двух (добрых) проектах hello world, написанных на node.js и asp.net-core. Оба они работают в режиме производства и без подключенного к ним регистратора. Результат поражает! Ядро ASP.NET превосходит приложение node.js даже после выполнения дополнительной работы, тогда как приложение node.js просто визуализирует представление.
Приложение 1: http://localhost:3000/nodejs
node.js
Использование: node.js, express и vash engine.
Код в этой конечной точке
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 App
Не могу поверить своим глазам! Нельзя сказать, что в этом базовом тесте ядро asp.net намного быстрее, чем nodejs. Конечно, это не единственная метрика, используемая для измерения производительности между этими двумя веб-технологиями, но мне интересно, что я делаю неправильно на стороне node.js?.
Будучи профессиональным разработчиком asp.net и желающим адаптировать node.js в личных проектах, это меня отвлекает, так как я немного параноик в отношении производительности. Я думал, что node.js быстрее, чем ядро asp.net(в целом - как видно в других тестах), я просто хочу доказать это себе (поощрять себя при адаптации node.js).
Пожалуйста, ответьте в комментарии, если вы хотите, чтобы я добавил дополнительные фрагменты кода.
Update: Распределение времени приложения .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