Nous écrivons souvent des rappels via des fonctions anonymes.
En termes simples, Anonymous signifie une fonction sans nom, est généralement exécutée immédiatement. Mais comment fonctionne-t-il avec les fonctions nommées (fonctions avec des noms)?
Nous pouvons le comparer. Nous pouvons trouver un ordinateur qui peut exécuter des commandes de shell pour utiliser un grand nombre d'appels de fonction pour voir comment le temps d'exécution est consommé par les deux:
anonymous.js
La copie de code est la suivante:
Var Count = 10000000
, sum = 0
while (count--) (function () {sum ++}) ()
Exécuter
La copie de code est la suivante:
$ Time Node Anonymous.js
réel 0m1.456s
utilisateur 0m0.015s
sys 0m0.031s
Jetons un coup d'œil aux fonctions nommées
named.js
La copie de code est la suivante:
Var Count = 10000000
, sum = 0
var cb = fonction () {
somme ++
}
Tandis que (compter--) cb ()
Exécuter
La copie de code est la suivante:
$ NODE TIME NAGMENT.JS
réel 0m0.575s
Utilisateur 0m0 000
sys 0m0.046s
Les fonctions nommées seront beaucoup plus rapides, pourquoi cela se produit-il? 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, de sorte que les performances seront améliorées. Cependant, le test a révélé que cette amélioration est très, très petite, et il n'est pas nécessaire d'écrire séparément un rappel très pratique dans une autre variable.
Il existe deux façons d'écrire des fonctions nommées:
Expressions de fonction
La copie de code est la suivante:
var func = function () {
console.log ('a')
}
Déclaration de fonction
La copie de code est la suivante:
fonction func () {
console.log ('b')
}
En fait, si ces deux sont utilisés ensemble, il peut y avoir des problèmes, comme
La copie de code est la suivante:
var func = function () {
console.log ('a')
}
fonction func () {
console.log ('b')
}
// La sortie est: un
Par conséquent, actuellement, la forme des expressions de fonction est principalement utilisée, mais comment sont les performances des déclarations de fonction?
Named2.js
La copie de code est la suivante:
Var Count = 10000000
, sum = 0
fonction cb () {
somme ++
}
Tandis que (compter--) cb ()
L'exécuter et comparer les deux
La copie de code est la suivante:
$ NODE TIME NAGMENT.JS
réel 0m0.553s
Utilisateur 0m0 000
sys 0m0.015s
$ NODE DE TIME NAGD2.JS
réel 0m0,529s
Utilisateur 0m0 000
sys 0m0.047s
Il semble que la déclaration de fonction sera un peu plus rapide, mais elle est très, très insignifiante. Je recommande personnellement la méthode d'écriture de la déclaration de fonction.
PS: ces données sont testées à l'aide de la base GIT sous Windows 7.