国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Node.js實用代碼段之正確拼接Buffer

2019-11-20 10:22:40
字體:
來源:轉載
供稿:網友

對于初學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代碼段,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平湖市| 武鸣县| 丽江市| 鄄城县| 宣威市| 安塞县| 洛浦县| 安陆市| 台东市| 于都县| 陆良县| 高要市| 南岸区| 南陵县| 五莲县| 五河县| 阿克苏市| 古交市| 丽江市| 五家渠市| 罗平县| 高尔夫| 临朐县| 克什克腾旗| 博湖县| 噶尔县| 印江| 西乌珠穆沁旗| 迭部县| 杂多县| 清镇市| 荆门市| 奉贤区| 建昌县| 文山县| 赤城县| 响水县| 阿尔山市| 凌源市| 巴马| 昌都县|