gpt4 book ai didi

node.js - 为什么这个 node.js 循环在 112050 次迭代后运行缓慢?

转载 作者:IT老高 更新时间:2023-10-28 23:08:06 24 4
gpt4 key购买 nike

我在玩 node.js,发现这个简单的程序运行得非常慢,我什至没有等到 3 分钟过去后花了多长时间。

var fs = require ('fs')
var s = fs.createWriteStream("test.txt");
for (i = 1; i <= 1000000; i++)
s.write(i+"\n");
s.end()

我尝试使用不同的值,发现 1-112050 需要 3 秒,而 1-112051 需要一分钟以上。这种突然的下降很奇怪。 python 中的相同程序,或等效的 shell 脚本“seq 1 112051”在合理的时间内(0-2 秒)运行。

请注意,这个 node.js 应用运行得更快:

var fs = require('fs')
, s = []
for (var i = 1; i <= 1000000; i++) s.push(i.toString())
s.push('')
fs.writeFile('UIDs.txt', s.join('\n'), 'utf8')

谁能向我解释为什么 node.js 会这样,以及为什么下降如此突然?

最佳答案

这是因为 for 循环是同步的,但 Writable.write() 不是。对于您的示例 s.write 创建 一百万 个 block 队列。这会导致超过 一百万 个函数调用 ( like this ) 来处理此队列。因此,Writable.write 不是为小块设计的。您可以check sources Writable.write 以获取有关它的更多信息。

关于node.js - 为什么这个 node.js 循环在 112050 次迭代后运行缓慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553629/

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