5

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

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

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

4

1 回答 1

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

编辑:我对功能齐全的脚本做了一个要点。

于 2013-12-07T15:15:17.933 回答