Maison > interface Web > js tutoriel > le corps du texte

Épissage correct des extraits de code pratiques de Node.js Buffer_node.js

WBOY
Libérer: 2016-05-16 15:10:24
original
1292 Les gens l'ont consulté

Pour les développeurs qui découvrent le framework Node.js, ils peuvent penser que le module Buffer est plus facile à apprendre et moins important. En fait, le module Buffer est largement utilisé dans les E/S de fichiers et les E/S réseau. Ses performances de traitement binaire sont bien supérieures à celles des chaînes ordinaires et son importance est très importante. Ci-dessous, nous démontrons aux lecteurs à travers une routine le processus d'épissage à l'aide de la méthode buf.concat().

Le code principal de ch04.buffer-concat.js dans cet exemple est le suivant :

/** 
 * 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 ------");
Copier après la connexion

【Analyse du code】

La 10ème ligne de code définit un objet Buffer, le nom de la variable est buf et initialise une chaîne data ("thisis Buffer concat test!"); la 11ème ligne de code définit une variable chaîne str et l'initialise Une chaîne data ("thisis String concat test!"); du début de la 15ème ligne de code à la fin de la 26ème ligne de code, une période d'enregistrement par intervalle de temps est terminée via console.time() et console.timeEnd( ) méthodes ; 16e à 21e La ligne de code définit une variable de tableau list[] et utilise la variable buf pour initialiser la variable de tableau ; la ligne de code 25 re-épisse les codes du tableau list[] dans un objet Buffer ; Méthode Buffer.concat(list,len) , la description syntaxique de la méthode Buffer.concat(list,len) est la suivante :

Syntaxe : Buffer.concat(list,[totalLength])
Description du paramètre :

list{Array} : type de tableau, Tableau tampon, utilisé pour être connecté
totalLength : type {Number}, la taille totale du premier paramètre Objet du tableau Buffer

Cette méthode renvoie un objet tampon qui enregistre l'épissage de tous les objets tampon dans le tableau tampon entrant ; si le tableau entrant n'a pas de contenu, ou si le paramètre totalLength est 0, un tampon de longueur nulle sera renvoyé s'il y en a ; n'est qu'un élément dans le tableau, alors le premier élément sera renvoyé ; s'il y a plus d'un élément dans le tableau, alors une nouvelle instance d'objet Buffer sera créée si le paramètre totalLength n'est pas fourni, bien que la lecture le soit ; calculé à partir de la récupération du tableau tampon, mais une boucle supplémentaire sera ajoutée pour calculer la longueur, donc fournir un paramètre totalLength explicite accélérera l'exécution de la méthode Buffer.concat()

 ;

Comme le montrent les résultats présentés sur la figure, le temps nécessaire à l'épissage à l'aide de la méthode Buffer.concat(list,len) est de 48 ms.

Fonction d'épissage d'objet tampon

Remarque : Le deuxième paramètre totalLength de la méthode Buffer.concat(list, [totalLength]) est spécial. Le totalLength ici n'est pas la longueur du tableau mais la taille totale des instances Buffer dans. le tableau.

Ce qui précède est le deuxième extrait de code pratique de Node.js, j'espère qu'il sera utile à l'apprentissage de chacun.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal