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

May 16, 2016 pm 04:34 PM
字符串 性能 拼接 数组

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.

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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comparaison des performances de différents frameworks Java Comparaison des performances de différents frameworks Java Jun 05, 2024 pm 07:14 PM

Comparaison des performances de différents frameworks Java

Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes May 03, 2024 pm 09:03 PM

Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes

Comment optimiser les performances des programmes multi-thread en C++ ? Comment optimiser les performances des programmes multi-thread en C++ ? Jun 05, 2024 pm 02:04 PM

Comment optimiser les performances des programmes multi-thread en C++ ?

Application de la fonction de regroupement de tableaux PHP dans le tri des données Application de la fonction de regroupement de tableaux PHP dans le tri des données May 04, 2024 pm 01:03 PM

Application de la fonction de regroupement de tableaux PHP dans le tri des données

Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double May 05, 2024 am 09:21 AM

Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double

Comparaison des performances du C++ avec d'autres langages Comparaison des performances du C++ avec d'autres langages Jun 01, 2024 pm 10:04 PM

Comparaison des performances du C++ avec d'autres langages

Échange clé-valeur de tableau PHP : analyse des avantages et des inconvénients des algorithmes courants Échange clé-valeur de tableau PHP : analyse des avantages et des inconvénients des algorithmes courants May 04, 2024 pm 10:39 PM

Échange clé-valeur de tableau PHP : analyse des avantages et des inconvénients des algorithmes courants

Les tableaux peuvent-ils être utilisés comme paramètres de fonction ? Les tableaux peuvent-ils être utilisés comme paramètres de fonction ? Jun 04, 2024 pm 04:30 PM

Les tableaux peuvent-ils être utilisés comme paramètres de fonction ?

See all articles