Я роблю швидкий стрес-тест для двох (свого роду) привіт світових проектів, написаних node.js і asp.net-core. Обидва вони працюють у виробничому режимі та без приєднаного до них реєстратора. Результат вражає! Ядро ASP.NET перевершує додаток node.js навіть після виконання додаткової роботи, тоді як додаток node.js просто надає подання.
Додаток 1: http://localhost:3000/nodejs
node.js
Використання : node.js, двигуна експресу та ваш-рендерінгу.
Код у цій кінцевій точці є
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).
Будь ласка, відповідайте у коментарі, якщо ви хочете, щоб я включив більше фрагментів коду.
Оновлення: розподіл у часі програми .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