gpt4 book ai didi

node.js - 为什么 Q 延迟在 Node.js 上这么慢?

转载 作者:IT老高 更新时间:2023-10-28 23:18:17 27 4
gpt4 key购买 nike

所以我在 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 0.9.6 以来堆栈跟踪已关闭,性能已大大提高。 (可以使用 Q.longStackSupport = true; 重新启用它们以进行调试)

原文:Q Promise 很慢,因为它们会在每个 Promise 上捕获完整的堆栈跟踪以帮助调试。这是非常缓慢的。您可以使用 Q.longStackJumpLimit = 0; 关闭它们(这可能是下一版本的默认设置)。通过关闭它们,我们发现了大约 30 倍的加速。你可以在这里找到更多 https://github.com/kriskowal/q#long-stack-traces

还有一些performance work on the nextTick implementation ,但我认为以上是主要原因。

关于node.js - 为什么 Q 延迟在 Node.js 上这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15669116/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com