首頁 > web前端 > js教程 > Node.js實用程式碼段之正確拼接Buffer_node.js

Node.js實用程式碼段之正確拼接Buffer_node.js

WBOY
發布: 2016-05-16 15:10:24
原創
1311 人瀏覽過

對於初學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,並初始化了一個字串資料("thisis Buffer concat test!");第11行程式碼定義了一個字串變數str,並初始化了一個字串資料("thisis String concat test!");從第15行程式碼開始到第26行程式碼結束,透過console.time()和console.timeEnd()方法完成一段時間間隔記錄;第16~21行程式碼定義了一個數組變數list[],並使用buf變數對該數組變數進行初始化;第25行程式碼透過Buffer.concat(list,len)方法將list[]數組中的編碼重新拼接成一個Buffer對象,關於Buffer.concat(list,len)方法的語法說明如下:

 語法:Buffer.concat(list,[totalLength]) 
參數說明: 

 list{Array}:陣列類型,Buffer數組,用於被連接
 totalLength:{Number}類型,第一個參數Buffer陣列物件的總大小

此方法傳回一個保存著將傳入buffer數組中所有buffer物件拼接在一起的buffer物件;如果傳入的陣列沒有內容,或者totalLength參數是0,那將傳回一個zero-length的buffer;如果數組中只有一項,那麼這第一項就會被傳回;如果數組中的項多於一個,那麼一個新的Buffer物件實例將被創建;如果totalLength參數沒有提供,雖然會從buffer數組中計算讀取,但是會增加一個額外的迴圈來計算該長度,因此提供一個明確的totalLength參數將會使得Buffer.concat()方法執行的更快;

從圖中顯示的結果可以看到,使用Buffer.concat(list,len)方法進行拼接的耗時為48ms。

Buffer物件拼接功能

注意:Buffer.concat(list, [totalLength])方法的第2個參數totalLength比較特別,這裡的totalLength不是數組長度是數組裡Buffer實例的大小總和。

以上就是第二個實用的Node.js程式碼段,希望對大家的學習有所幫助。

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板