5

整数の配列を含む大きな (> GB) ファイルをストリーミングする必要がある nodejs でアプリケーションを構築することを検討しています。重要なのは、配列を最適にシリアル化する必要があるため、ASCII ベースではなく、理想的には小さい整数 (データの大部分になる) に 8 ビットを使用することですが、それでも大きな数値を表すことができます。

この質問はおそらくnodejs以上のものですが、nodejsでこれをどのように行うのですか? ディスクからカスタム バイト エンコーディングを使用してファイルをストリーミングするためのすぐに利用できるソリューションはありますか? それとも整数配列ですか?

理想的には、ストリームの各部分のデコードは、ssd を使用する場合でも、CPU バウンドではなくディスク バウンドである必要があります。

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 に答える