node.js - Node.js 中可写流的 write() 方法调用速度有多快?

标签 node.js fs

在我的服务器端,我使用可写流来记录连接到服务器的所有客户端的变化数据。这是我写的:

function updateLoop () {
    var data = {'timeStep': timeStep, 'playerInfo': playerInfo};
    var text = JSON.stringify(data);
    writeStram.write(text + '\n');
    timeStep += 1;
}
...
updateTimer = setInterval(updateLoop, 50);

因此函数 updateLoop() 每 50 毫秒调用一次。

当'playerInfo'很小(小于1KB)时有效,例如服务器端运行20s后,输出文件中有20*1000/50 = 400行数据

p> 但当“playerInfo”变大,如6KB或更大时,服务器端运行20秒后,输出文件中只有220行数据。 playerInfo 越大,输出文件中成功记录的数据行数就越少。

我想知道 write() 方法的调用率是否有限制

非常感谢你们的帮助!

最佳答案

问题可能不是专门针对 write 的,而是与 setIntervalhow timers work 相关。在 JavaScript 中。

对于较大的数据,updateLoop 完成执行所需的时间可能比设置的 50 毫秒延迟更长。如果花费的时间足够长,使得间隔彼此重叠,其中一个间隔在另一个已经在等待时被添加到事件队列中,则跳过(或“丢弃”)较新的间隔。

How fast can the method write() of writable stream in node.js be called?

write 不应显式限制性能,但它可能会受到 Node 在计算机上可以实现的整体性能的限制(受 CPU、RAM 等影响)。

您必须对 updateLoop 与不同数量的 playerInfo 的性能进行基准测试和比较。有几个packages您可以使用此功能,包括 ben :

ben(1000, updateLoop, function (ms) {
    console.log(ms, 'milliseconds per iteration');
});

关于node.js - Node.js 中可写流的 write() 方法调用速度有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523125/

相关文章:

javascript - 如何修复 Three.js 加载超过 2 分钟并崩溃的问题

node.js - 比较 Mongoose 查询中的 ObjectID

javascript - request.pipe() 和大文件的 Node 问题,错误 : cannot create a string longer than 0x1fffffe8 characters

node.js - nodejs 异步列出或删除所有文件和目录,仅传递起始路径

javascript - fs.writeFile 没有错误,但写入文件失败

typescript - Firebase Functions Typescript - 使用 html 模板发送电子邮件

node.js - Windows 7 上的 npm install "Adding a cache directory"错误

javascript - Node、express 和 Angular 的重定向问题

node.js - NodeJS 流响应以防止内存不足错误

javascript - fs.readdir 在函数内部调用时返回 undefined