有效地串行化(并从nodejs读取)int数组

efficiently serialise (and read) int array from nodejs

本文关键字:读取 int 数组 nodejs 并从 有效地      更新时间:2024-04-13

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

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

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

我觉得没有先深入文档很傻(这个项目的目的毕竟是为了学习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

编辑:我为这个功能齐全的剧本做了一个要点。