请求进程中的节点 js 性能
Node js performance in request process
请考虑以下代码:
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
控制台上执行某些操作的打印/回显/系统输出一样。
编辑:除此之外,如果没有操作,解释器将简单地跳过循环。如果你真的在其中做了一些事情,那当然需要时间。
相关文章:
- 在Three.js中导出网格会提高性能吗
- immutable.js与嵌套映射/对象的比较/相等性能
- 性能与模块化:将JS集成到PHP或单独的custom.JS中
- 设置1400个Raphael.js对象的不透明度动画会影响动画性能
- ExtJS类的最佳实践最终导致了太多的.JS文件.性能怎么样
- Knockout.js性能-有多少可观察性
- 具有200+矢量形状的画架JS:性能和美学
- 三个js性能如何使使用图像纹理更快
- 选择.js性能
- React js 性能工具插件抛出“无法读取未定义的属性'计数'”
- 可排序,js性能很慢
- 请求进程中的节点 js 性能
- Three.js性能与对象数量有关
- 奇怪的JS性能问题
- Node.js性能-读取文件一次或每次请求
- JS性能:为什么不加载未初始化或删除的元素?
- js -性能低,只有40 "简单"模型
- 在Redux中切换到Immutable.js.性能影响是什么?对组件的影响是什么? '语法
- Internet Explorer中的传单.js性能较差
- Node.js性能瓶颈