Maison  >  Article  >  interface Web  >  Résumé JS des méthodes de traversée de tableau et comparaison des performances

Résumé JS des méthodes de traversée de tableau et comparaison des performances

php中世界最好的语言
php中世界最好的语言original
2018-06-08 14:51:141330parcourir

Cette fois, je vais vous présenter un résumé et une comparaison des performances des méthodes de parcours de tableaux utilisant JS. Quelles sont les précautions à prendre pour un résumé et une comparaison des performances des méthodes de parcours de tableaux utilisant JS ? Ce qui suit est un cas pratique, jetons un coup d'oeil.

Préface

Cet article appartient à la même série que l'article précédent sur plusieurs méthodes d'échange de variables JS et comparaison d'analyse des performances. Cet article continue. l'analyse. Plusieurs méthodes de traversée de tableaux couramment utilisées dans JS et leurs comparaisons de performances respectives

à partir de

La dernière fois, j'ai analysé plusieurs variables courantes dans JS Après avoir échangé les méthodes et leurs performances respectives, j'ai senti que cette méthode était plutôt bonne, j'ai donc extrait la logique de base, l'ai encapsulée dans un modèle et j'ai prévu de l'étendre dans une série. Cet article est le deuxième article de la série. , une analyse et une comparaison des méthodes de traversée de tableaux JS

Plusieurs façons de parcourir des tableaux JS

Traversée de tableaux JS, essentiellement pour, forin, foreach , forof, map et d'autres méthodes, Ce qui suit présente plusieurs méthodes de traversée de tableaux utilisées dans la comparaison d'analyse et d'analyse des performances de cet article

Le premier type : boucle for ordinaire

Le le code est le suivant :

for(j = 0; j < arr.length; j++) {
}

Brève description : Le plus simple et le plus fréquemment utilisé Bien que les performances ne soient pas faibles, il y a encore place à l'optimisation

Deuxièmement. tapez : version optimisée de la boucle for

Le code est le suivant :

for(j = 0,len=arr.length; j < len; j++) {
}

Brève description : utilisez des variables temporaires pour mettre en cache la longueur afin d'éviter d'obtenir à plusieurs reprises la longueur du tableau. l'effet d'optimisation sera plus évident lorsque le tableau est plus grand.

Cette méthode est fondamentalement la plus performante parmi toutes les méthodes de parcours de boucle

Le troisième type : version affaiblie de la boucle for

Le code est le suivant :

for(j = 0; arr[j]!=null; j++) {
}

Brève explication : cette méthode est en fait strictement une boucle for, mais elle n'utilise pas le jugement de longueur, mais utilise la variable elle-même pour juger

En fait, cette méthode Le les performances sont bien inférieures à celles de la boucle for ordinaire

Le quatrième type : boucle foreach

Le code est le suivant :

arr.forEach(function(e){
});

Brève description : Le tableau est livré avec La boucle foreach est utilisée plus fréquemment et ses performances sont en fait plus faibles que la boucle for ordinaire

Le cinquième type : variante foreach

Le Le code est le suivant :

Array.prototype.forEach.call(arr,function(el){
});

Brève description : Puisque foreach est livré avec le type Array, certains types autres que ce type ne peuvent pas être utilisés directement (comme NodeList), donc cette variante est créée en utilisant cette variante. permettre à des tableaux similaires d'avoir la fonction foreach.

Les performances réelles sont plus faibles que celles d'un foreach ordinaire

Le sixième type : boucle forin

Le code est le suivant :

for(j in arr) {
}

Brève explication : Beaucoup de gens aiment utiliser cette boucle, mais en fait, après analyse et tests, c'est la moins efficace parmi les nombreuses méthodes de parcours de boucle

Le septième méthode : map Le code pour parcourir

est le suivant :

arr.map(function(n){
});

Brève description : Cette méthode est également largement utilisée Bien qu'elle soit plus élégante à utiliser, la méthode réelle. l'efficacité n'est pas aussi bonne que foreach

Le huitième type : forof traversal (nécessite le support ES6)

Le code est le suivant :

for(let value of arr) {
});

Brève description : Cette méthode est utilisée dans es6. Les performances sont meilleures que celles du forin, mais toujours pas aussi bonnes que la boucle for ordinaire

Comparaison des performances de diverses méthodes de traversée

énumérées ci-dessus Plusieurs méthodes ont été comparées et analysées une par une. En gros, la conclusion que l'on peut tirer est la suivante :

La boucle for ordinaire est la plus élégante .

(PS : tous les codes ci-dessus effectuent simplement des boucles vides, il n'y a pas de code d'exécution interne dans la boucle, ils analysent simplement le temps de chaque boucle)

Performance captures d'écran de comparaison

Résultat de l'analyse 1

Les données de la capture d'écran ci-dessous sont la conclusion tirée après l'avoir exécutée 100 fois dans Chrome (supportant es6) (chaque exécution 10 fois, un total Après 10 cycles, les résultats d'analyse obtenus)

On peut voir que la boucle forin est la plus lente. La boucle for ordinaire optimisée est la plus rapide

Résultat de l'analyse 2

Les données de capture d'écran suivantes sont la conclusion tirée après avoir exécuté 1000 fois dans Chrome (supporte es6) (100 fois à chaque fois, 10 boucles au total), le résultat obtenu résultats de l'analyse)

De plus, vous pouvez utiliser les outils d'analyse de démonstration suivants pour analyser et comparer les méthodes de traversée de tableaux JS

Je crois que vous avez lu le cas dans cet article Vous maîtrisez la méthode. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

vue-simplemde pour faire du glisser-coller d'images

Un cas pratique de réaction et d'état attributs Explication détaillée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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