Node.js 如果所有数据都放在一个块中,那么使用流有什么好处?
当我在Node.js中执行Node.js 如果所有数据都放在一个块中,那么使用流有什么好处?,node.js,stream,Node.js,Stream,当我在Node.js中执行fs.createReadStream时,数据似乎是以64KB的块形式出现的(我假设这在不同的计算机中有所不同) 假设我正在通过一系列转换(每个转换操作一个块)将一个读流传输到一个写流,然后将其保存到磁盘 如果我事先知道我正在处理的文件保证每个都小于64KB(即,它们将在单个块中读取),那么使用流与普通的旧异步代码相比有什么好处吗?首先,您可以使用配置块大小:字节模式流的默认值为16k(16个对象用于对象模式流),但默认为64k块(请参阅) 如果您完全确定您的所有数据都
fs.createReadStream
时,数据似乎是以64KB的块形式出现的(我假设这在不同的计算机中有所不同)
假设我正在通过一系列转换(每个转换操作一个块)将一个读流传输到一个写流,然后将其保存到磁盘
如果我事先知道我正在处理的文件保证每个都小于64KB(即,它们将在单个块中读取),那么使用流与普通的旧异步代码相比有什么好处吗?首先,您可以使用配置块大小:字节模式流的默认值为16k(16个对象用于对象模式流),但默认为64k块(请参阅) 如果您完全确定您的所有数据都可以放在一个块中,那么使用流确实不会带来立竿见影的好处 但请记住,流是灵活的;它们是代码的统一抽象:您可以从文件、套接字或随机生成器中读取数据。您可以从流管道中添加或删除双工流,您的代码仍将以相同的方式工作 您还可以通过管道将单个可读流传输到多个可写流中,仅使用异步回调将是一件痛苦的事情
还要注意的是,流不会同步发出数据(即,
可读的
事件在下一个勾号发出),它可以很好地处理同步调用异步回调的常见错误,从而创建一个可能的堆栈溢出错误。另外一点是,当您的数据块为16k、64k或其他值时,流的接收者可能会更小,而且对他们来说,流式处理还是有益的。