Maison >interface Web >js tutoriel >Tests de performances des fonctions anonymes et nommées dans les connaissances JavaScript_Basic

Tests de performances des fonctions anonymes et nommées dans les connaissances JavaScript_Basic

WBOY
WBOYoriginal
2016-05-16 16:37:171243parcourir

Nous écrivons souvent des rappels via des fonctions anonymes.

Pour faire simple, anonyme signifie une fonction sans nom, qui est généralement exécutée immédiatement. Mais comment se comporte-t-il par rapport aux fonctions nommées (fonctions avec des noms) ?

On peut comparer. On peut trouver un ordinateur capable d'exécuter des commandes Shell et utiliser un grand nombre d'appels de fonction pour voir le temps d'exécution des deux :

anonyme.js

Copier le code Le code est le suivant :

nombre de variables = 100000000
, somme = 0
while (count--) (function() { sum })()

Exécutez-le
Copier le code Le code est le suivant :

$ nœud de temps anonyme.js
réel 0m1.456s
utilisateur 0m0.015s
sys 0m0.031s

Jetons un coup d'œil aux fonctions nommées

named.js

Copier le code Le code est le suivant :

nombre de variables = 100000000
, somme = 0

var cb = fonction() {
somme
>

while (count--) cb()


Exécutez-le
Copier le code Le code est le suivant :

$ nœud de temps nommé.js
réel 0m0.575s
utilisateur 0m0.000s
système 0m0.046s

Les fonctions nommées sont beaucoup plus rapides, pourquoi ? En fait, ce n'est pas difficile à expliquer. Les fonctions anonymes doivent réinterpréter le rappel à chaque fois, mais les fonctions nommées ne doivent être interprétées qu'une seule fois, donc les performances seront améliorées. Cependant, le test a révélé que cette amélioration est très, très faible. . Il n'est pas nécessaire de séparer un rappel très pratique écrit comme une autre variable.

De plus, il existe deux manières d'écrire des fonctions nommées :

Expression de fonction

Copier le code Le code est le suivant :

var func = fonction() {
console.log('a')
>

Déclaration de fonction
Copier le code Le code est le suivant :

fonction func() {
console.log('b')
>

En fait, il peut y avoir des problèmes si ces deux éléments sont utilisés ensemble, comme
Copier le code Le code est le suivant :

var func = fonction() {
console.log('a')
>
fonction func() {
console.log('b')
>
//Le résultat est : a

Par conséquent, la forme d'expression de fonction est principalement utilisée à l'heure actuelle, mais quelle est la performance de la déclaration de fonction ?

named2.js

Copier le code Le code est le suivant :

nombre de variables = 100000000
, somme = 0

fonction cb() {
somme
>

while (count--) cb()


Exécutez-le et comparez les deux
Copier le code Le code est le suivant :

$ nœud de temps nommé.js
réel 0m0.553s
utilisateur 0m0.000s
sys 0m0.015s

$ nœud temporel nommé2.js
réel 0m0.529s
utilisateur 0m0.000s
sys 0m0.047s


Il semble que la déclaration de fonction sera légèrement plus rapide, mais la vitesse est très, très peu évidente. Personnellement, je recommande toujours d'écrire une déclaration de fonction.

PS : Ces données ont été testées en utilisant git-base sous Windows 7.

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