Donc, j'ai créé ce serveur de test simple dans Node.js
Chaque fois que je fais une réponse directe, je reçois demandes/seconde (rapide!). Lorsque je n'emballe qu'un Q Q différé autour de lui, il passe à requêtes/seconde (4 fois plus lent!). Quelqu'un peut-il expliquer cette énorme différence?Pourquoi les Q différés sont-ils si lents sur Node.js?
// Requires
var server = require('http');
var q = require('q');
// Start server
var http = require('http');
http.createServer(function(request, response) {
// Comment out either of two below sections
// Without deferred
// 2200 reqs/second
response.writeHead(200, {"Content-Type": "text/html"});
response.write("test");
response.end();
// Q deferred
// 580 reqs/second
var deferred = q.defer();
deferred.promise.then(function() {
response.writeHead(200, {"Content-Type": "text/html"});
response.write("test");
response.end();
});
deferred.resolve();
}).listen(1234);
Apparemment, les promesses Q sont vraiment lentes, je viens de lire [this] (http://dailyjs.com/2013/03/27/node-roundup/) qui mentionne la [bibliothèque de voeux] (https: // github. com/dfilatov/jspromise) qui est apparemment ~ 50 fois plus rapide que Q. – robertklep
Je vérifie https://github.com/medikoo/deferred pour le moment aussi, et il semble ne pas avoir de frais généraux non plus (se rendre à 2200 reqs/seconde régulièrement). Je suis vraiment curieux de savoir pourquoi Q est si lent ... –
En parcourant le code, je remarque qu'il utilise beaucoup 'process.nextTick()', ce qui pourrait ralentir considérablement les choses. – robertklep