Slow Buffer.concat

当我以64Kb的片段读取一个16MB的文件,并且在每个片断上执行Buffer.concat时,后者certificate是非常慢的,需要整整4秒才能完成。

有没有更好的方法来连接Node.js中的缓冲区?

使用Node.js版本:7.10.0,在Windows 10下(均为64位)。


在研究以下问题时会询问这个问题: https : //github.com/brianc/node-postgres/issues/1286 ,这会影响到大量的观众。

PostgreSQL驱动程序以64Kb的块读取较大的bytea列,然后连接它们。 我们发现调用Buffer.concat是在这样的例子中性能巨大的损失背后的罪魁祸首。

每一次(每次都会创build一个新的缓冲区)并不是每次都连接在一起,只要在最后保留一个所有缓冲区和连续数组的数组。

Buffer.concat()可以获取一个完整的缓冲区列表。 然后在一个操作中完成。 https://nodejs.org/api/buffer.html#buffer_class_method_buffer_concat_list_totallength