node.js中可写入stream的write()方法有多快?

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

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

所以函数updateLoop()每50ms调用一次。

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

但是当“playerInfo”变大时,如6KB以上,服务器端运行20s后,输出文件中只有220行数据。 较大的playerInfo是输出文件中成功logging数据的较小行。

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

非常感谢你们的帮助!

这个问题可能不是专门setInterval write ,而是用setInterval和定时器如何在JavaScript中工作 。

对于更大的数据, updateLoop可能需要更长的时间才能完成执行,而不是50 ms的设置延迟。 如果时间间隔足够长,以致间隔相互重叠,那么当另一个已经在等待时将其中一个添加到事件队列中,则新的间隔被跳过(或“丢弃”)。

node.js中可写入stream的write()方法有多快?

write不应该明确地节制性能,但它可以受节点可以在您的计算机上实现的整体性能(受CPU,RAM等影响)的限制。

你必须进行基准testing,并比较updateLoop和不同的playerInfo的性能。 有几个包可以用来做这个,包括ben

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