Maison > interface Web > js tutoriel > Discuter des problèmes de performances des compétences splicing_javascript du tableau de chaînes js

Discuter des problèmes de performances des compétences splicing_javascript du tableau de chaînes js

WBOY
Libérer: 2016-05-16 16:34:19
original
1340 Les gens l'ont consulté

Nous savons qu'en js, la concaténation de chaînes est l'une des opérations les moins performantes.
Par exemple :

Copier le code Le code est le suivant :

var text="Bonjour";
texte = "Monde!";

Les premiers navigateurs n'optimisaient pas cette opération.
Les chaînes étant immuables, cela signifie créer une chaîne intermédiaire pour stocker le résultat de la concaténation. La création et la destruction fréquentes de chaînes en arrière-plan entraînent des performances extrêmement faibles.

Par conséquent, les objets tableau peuvent être utilisés à des fins d'optimisation.
Par exemple :

var buffer=[],i=0; 
buffer[i++]="Hello";  //通过相应索引值添加元素比push方法快 
buffer[i++]=" World!"; 
var text=buffer.join("");
Copier après la connexion

Dans les premiers navigateurs, il n'y avait pas de création ni de destruction de chaînes intermédiaires. Dans le cas d'un grand nombre de concaténations de chaînes, cette technique s'est avérée beaucoup plus rapide que l'utilisation de l'addition.

De nos jours, l'optimisation des chaînes par le navigateur a changé la situation de la concaténation des chaînes. Safari, Opera, Chrome, Firefox et IE8 affichent tous de meilleures performances en utilisant l'opérateur d'addition. Cependant, les versions antérieures à IE8 n'étaient pas optimisées, la méthode tableau fonctionne donc toujours. Cela ne signifie pas que nous devons effectuer une détection du navigateur lors de la concaténation de chaînes. Les éléments à prendre en compte pour décider comment concaténer sont la taille et le nombre de chaînes.

Lorsque la chaîne est relativement petite (moins de 20 caractères) et que le nombre de connexions est également faible (moins de 1000), tous les navigateurs peuvent facilement établir la connexion en moins de 1 milliseconde à l'aide de l'opérateur d'addition. Les performances diminuent considérablement dans IE7 lorsque le nombre ou la taille des chaînes augmente. À mesure que la taille des chaînes augmente, la différence de performances entre les opérateurs d’addition et les techniques de composition de tableaux dans Firefox diminue. À mesure que le nombre de chaînes augmente, la différence de performances entre les opérateurs d’addition et les techniques de composition de tableaux dans Safari diminue. L'opérateur d'addition dans Chrome et Opera reste en avance lors de la modification du nombre ou de la taille des chaînes.

Par conséquent, en raison de performances incohérentes sous différents navigateurs, la technologie choisie dépend de la situation réelle et du navigateur auquel vous êtes confronté.

Dans la plupart des cas, l'opérateur d'addition est préféré ; si l'utilisateur utilise principalement IE6 ou 7 et que la taille de la chaîne est grande ou qu'il y en a plusieurs, alors la technique du tableau en vaut la peine.

De manière générale, s'il s'agit d'une chaîne sémantique, Array ne doit pas être utilisé, comme :
'Bonjour, je m'appelle 'nom;

Si la chaîne est une "répétition de situations similaires", il est recommandé d'utiliser Array, tel que :

var array = []; 
for (i = 0; i < length; i++) { 
array[i] = '<li>' + list[i] + '</li'>; 
} 
document.getElementById('somewhere').innerHTML = array.join('\n');
Copier après la connexion

La comparaison des performances de la connexion au tableau de chaînes js est présentée ici. J'espère qu'elle sera utile à tout le monde.

É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