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'); });