Node.js フレームワークを初めて使用する開発者は、Buffer モジュールの方が学習しやすく、重要性が低いと考えるかもしれません。実際、Buffer モジュールはファイル I/O やネットワーク I/O で広く使用されており、そのバイナリ処理パフォーマンスは通常の文字列よりもはるかに高く、その重要性は非常に高いです。以下では、ルーチンを使用して、buf.concat() メソッドを使用したスプライシングのプロセスを読者に示します。
この例の ch04.buffer-concat.js のメインコードは次のとおりです:
/** * ch04.buffer-concat.js */ console.info("------ Buffer concat vs String concat ------"); console.info(); /** * define variable * @type {Buffer} */ var buf = new Buffer("this is Buffer concat test!"); var str = "this is String concat test!"; /** * start record time */ console.time("buffer concat test!"); var list = []; var len = 100000 * buf.length; for(var i=0; i<100000; i++){ list.push(buf); len += buf.length; } /** * Buffer 对象拼接 */ var s1 = Buffer.concat(list, len).toString(); console.timeEnd("buffer concat test!"); console.info(); console.time("string concat test!"); var list = []; for(var i=100000; i>=0; i--) { list.push(str); } /** * String 对象拼接 * @type {string} */ var s2 = list.join(""); console.timeEnd("string concat test!"); /** * end record time */ console.info(); console.info("------ Buffer concat vs String concat ------");
【コード解析】
コードの 10 行目は Buffer オブジェクトを定義し、変数名は buf で、文字列データを初期化します (「これは Buffer concat test!」)。コードの 11 行目は文字列変数 str を定義し、それを文字列に初期化します。 data ("thisis String concat test!"); コードの 15 行目の先頭からコードの 26 行目の終わりまで、一定期間の記録が console.time() と console.timeEnd( ) メソッド; 16 番目から 21 番目 コード行は、配列変数 list[] を定義し、 buf 変数を使用して配列変数を初期化します。コード行 25 は、 list[] 配列内のコードを Buffer オブジェクトに再結合します。 Buffer.concat(list,len) メソッド。Buffer.concat(list,len) メソッドの構文説明は次のとおりです。
構文:Buffer.concat(list,[totalLength])
パラメータの説明:
list{Array}: 配列タイプ、バッファ配列、接続されていた
totalLength: {Number} 型、最初のパラメータの合計サイズ バッファ配列オブジェクト
図に示した結果からわかるように、Buffer.concat(list,len) メソッドを使用したスプライシングにかかる時間は 48ms です。
バッファオブジェクトのスプライシング関数
注:Buffer.concat(list, [totalLength]) メソッドの 2 番目のパラメーター totalLength は特殊であり、ここでの totalLength は配列の長さではなく、バッファー インスタンスの合計サイズです。配列。 上記は 2 番目の実践的な Node.js コード スニペットです。皆さんの学習に役立つことを願っています。