Jac*_*ble 9 performance buffer node.js
我正在使用node.js来提供一些存储在SQLite数据库中的PNG图像作为二进制BLOB.这些图像很小,平均为9500字节.
我正在使用sqlite3 npm包,它似乎返回二进制BLOB对象SlowBuffers.我的node.js服务将这些内容保存SlowBuffers在内存中以缓解IO延迟,为它们提供如下服务:
response.send(slowBuffer);
Run Code Online (Sandbox Code Playgroud)
它似乎SlowBuffer有一个类似的界面Buffer; 转换Buffer为微不足道的:
var f = function(slowBuffer) {
var buffer = new Buffer(slowBuffer.length);
slowBuffer.copy(buffer);
return buffer;
}
Run Code Online (Sandbox Code Playgroud)
我应该把它们转换SlowBuffers成Buffers?
帮助我理解为什么它们被称为"缓慢"缓冲区.
use*_*109 14
如果您要阅读帖子:
Node提供两种类型的缓冲区对象.Buffer是一个原生的Javascript数据结构; SlowBuffer由C++模块实现.使用本机Javascript环境中的C++模块会花费额外的CPU时间,因此"慢".Buffer对象由SlowBuffer对象支持,但可以直接从Javascript读取/写入内容以获得更好的性能.
任何Buffer大于8 KB的SlowBuffer对象都由单个对象支持.Buffer小于8 KB的多个对象可以由单个SlowBuffer对象支持.当Buffer内存中存在多个小于8 KB的对象(由单个支持SlowBuffer)时,如果您要SlowBuffer为每个对象使用a,则C++模块可能会非常高.小Buffers的通常大量使用.
This class is primarily for internal use意味着如果您想自己管理服务器上的缓冲区,那么使用SlowBuffer(在较小的块中使用,您必须SlowBuffer自己进行分区).除非你想在处理缓冲区中进行那种微小的级别控制,否则使用Buffer对象应该没问题.
| 归档时间: |
|
| 查看次数: |
4879 次 |
| 最近记录: |