请求进程中的节点 js 性能

Node js performance in request process

本文关键字:js 性能 节点 进程 请求      更新时间:2023-09-26

请考虑以下代码:

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");

如果我们运行此代码,我们也应该等待很多分钟以获得响应。但是,如果在 for 中运行 for 而没有console.log("Request received");,我们会得到高速响应?为什么?

简单地说,空"for"中的一个循环几乎需要零时间。但是带有 console.log() 的输出需要更多的时间,而且也是同步的。

首先从

node.js v0.6开始,console.log()是同步的(即它阻塞了主事件循环)。

您在每个请求上写入大约 17MB 的stdout。服务器可能需要几分钟才能响应。

我认为是因为在控制台中编写console.log("Request received");获取时间过程。

console.log非常

慢,就像任何其他在STDOUT控制台上执行某些操作的打印/回显/系统输出一样。

编辑:除此之外,如果没有操作,解释器将简单地跳过循环。如果你真的在其中做了一些事情,那当然需要时间。