私は64KBのの作品で16メガバイトのファイルを読み込み、それぞれの作品にBuffer.concat
を行うと、後者は非常に遅くなることを証明するには、たくさん通過する全4Sをとります。スローBuffer.concat
Node.jsのバッファを連結する良い方法はありますか?
Node.jsバージョン使用:7.10.0、Windows 10(いずれも64ビット)。
以下の問題研究しながら、この質問は頼まれる:https://github.com/brianc/node-postgres/issues/1286、多くの聴衆に影響を与えます。
PostgreSQLドライバは、大量のbytea
列を64Kbのチャンクで読み取り、それらを連結します。私たちは、Buffer.concat
を呼び出すことが、そのような例でのパフォーマンスの大きな犠牲の背後にある原因であることを発見しました。
なぜ64KB単位で読み込む必要がありますか?いずれの場合も、それを行うのに4秒かかるはずはありません。このコードを絞り込むことはできますか? – Brad
@ブラッド私はちょうど説明を追加しました。 –
各部分を配列に押し込み、全体で 'Buffer.concat()'を一緒に使います。コピーするO(n²)時間の代わりにO(n)。 – Ryan