nodejs readstream,我应该用什么值用于HighWatermark

发布于 2025-01-25 10:27:56 字数 973 浏览 3 评论 0原文

我有一个复制函数使用createReadStreamcreatewritestream在文件副本期间给我进度事件:

        createReadStream(source, { highWaterMark })
            .pipe(
                progress({ length: stats.size }).on('progress', (event) =>
                    subscriber.next({ ...event, type: 'fileStreamProgress', stats: { source, stats } })
                )
            )
            .pipe(createWriteStream(destination, force ? undefined : { flags: 'wx' }))
            .once('error', (err) => subscriber.error(err))
            .once('finish', () => subscriber.complete());

我真的不知道HighWatermark是什么。我粗略的理解是它是块大小。如果我有无限的记忆,我应该将其设置为无限?还是“块”仅一旦读取了路径的下一个项目?我确实看到副本速度越高,此数字越大,但是在某个时刻,它开始越来越慢。

我将主要是复制大约20-30 GB的视频文件,并想知道什么高水标记值会给我带来最佳性能。

谢谢

I have a copy function that uses createReadStream and createWriteStream to give me progress events during a file copy:

        createReadStream(source, { highWaterMark })
            .pipe(
                progress({ length: stats.size }).on('progress', (event) =>
                    subscriber.next({ ...event, type: 'fileStreamProgress', stats: { source, stats } })
                )
            )
            .pipe(createWriteStream(destination, force ? undefined : { flags: 'wx' }))
            .once('error', (err) => subscriber.error(err))
            .once('finish', () => subscriber.complete());

I don't really know what highWaterMark is. My rough understanding is that it is chunk size. If I had infinite memory surely I should just set this to infinity? Or does the "chunk" only get sent to the next item in the path once it has all been read? I do see that copy speed gets higher the larger this number is but at a certain point it starts to get slower again.

I will mostly be copying video files that are about 20 -30 GB and wondering what highwatermark value will give me the best performance.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文