考虑以下代码:
var http = require("http");
http.createServer(function(request, response) {
for (var i = 0; i < 1000000; i++) {
console.log("Request received");
}
response.writeHead(200, {
"Content-Type": "text/plain"
});
response.write("Hello World");
response.end();
}).listen(8888, "127.0.0.1");
如果我们运行此代码,我们应该等待很多分钟得到响应。但是如果在没有console.log("Request received");
的情况下运行for for,我们得到高速响应?
为什么呢?
答案 0 :(得分:1)
简单地说,空“for”中的一个循环几乎为空时间。 但是使用console.log()的输出需要更多的时间并且它也是同步的。
答案 1 :(得分:1)
首先从node.js v0.6 开始,console.log()
是同步的(即它会阻止主事件循环。)
您在每个请求上写着 17MB 到 stdout 。服务器可能需要几分钟才能响应。
答案 2 :(得分:0)
我认为因为在控制台get time过程中写console.log("Request received");
。
答案 3 :(得分:0)
console.log
非常慢,就像在STDOUT
控制台上执行某些操作的其他print / echo / sysout一样。
编辑:除此之外,如果没有操作,解释器将简单地跳过循环。如果你真的在里面做了什么,那当然需要时间。