从nodejs有效地序列化(和读取)int数组

时间:2013-12-07 13:15:31

标签: javascript arrays node.js serialization node.js-stream

我正在考虑在nodejs中构建一个应用程序,该应用程序需要流式传输包含整数数组的大(> GB)文件。最重要的是,阵列需要以最佳方式进行序列化,因此不是基于ascii,理想情况下使用8位用于较小的整数(这将是绝大多数数据),但仍然能够代表更大的数字。

这个问题可能不仅仅是关于nodejs,而是如何在nodejs中解决这个问题?是否有现成的流式文件解决方案,其中包含来自磁盘的自定义字节编码?或者更好,整数数组?

理想情况下,即使使用ssd,流的每个部分的解码也应该是磁盘绑定而不是cpu绑定。

1 个答案:

答案 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完整功能的脚本。