我正在考虑在nodejs中构建一个应用程序,该应用程序需要流式传输包含整数数组的大(> GB)文件。最重要的是,阵列需要以最佳方式进行序列化,因此不是基于ascii,理想情况下使用8位用于较小的整数(这将是绝大多数数据),但仍然能够代表更大的数字。
这个问题可能不仅仅是关于nodejs,而是如何在nodejs中解决这个问题?是否有现成的流式文件解决方案,其中包含来自磁盘的自定义字节编码?或者更好,整数数组?
理想情况下,即使使用ssd,流的每个部分的解码也应该是磁盘绑定而不是cpu绑定。
答案 0 :(得分:1)
我对于不首先深入了解文档感到愚蠢(这个项目的目的是让我学习nodejs)。
结果显示文件系统模块的默认行为可以查找作业。虽然我还没有实现可变长度数量解码部分或测试它的速度。
var fs, rs, bufferSize, buffer, i;
fs = require('fs');
rs = fs.createReadStream('/Path/to/file');
bufferSize = 10;
while(true){
buffer = rs.read(bufferSize);
if (!buffer) break;
for(i=0; i<buffer.length; i++;){
byte = buffer[i];
// interpret byte given as integer according to 'variable-length quantity' encoding
}
}
http://en.wikipedia.org/wiki/Variable-length_quantity
编辑:我制作了a gist完整功能的脚本。