【发布时间】:2013-03-18 03:21:39
【问题描述】:
所以我在 Node.js 中创建了这个简单的测试服务器
每当我进行直接响应时,我都会收到 2200 个请求/秒(快!)。
当我只在它周围包裹一个简单的 Q 延迟时,它会下降到 580 个请求/秒(慢 4 倍!)。谁能解释一下这种巨大的差异?
// 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);
【问题讨论】:
-
显然 Q 承诺真的很慢,我刚刚读到 this 提到 Vow library 显然比 Q 快约 50 倍。
-
我现在也在检查github.com/medikoo/deferred,它似乎也没有开销(稳定地达到 2200 请求/秒)。我真的很好奇为什么 Q 这么慢...
-
浏览代码时我注意到它大量使用
process.nextTick(),这可能会大大减慢速度。 -
node-jquery 怎么样,我很想知道它在性能方面的比较?
-
我很想看看这些数据块刚刚包裹在
process.nextTick中。
标签: node.js deferred promise q