在我的服务器端,我使用可写流来记录连接到服务器的所有客户端的变化数据。这是我写的:
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
的,而是与 setInterval
和 how 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/