Heim  >  Artikel  >  Web-Frontend  >  Leistungstests anonymer und benannter Funktionen in JavaScript_Grundkenntnisse

Leistungstests anonymer und benannter Funktionen in JavaScript_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:37:171221Durchsuche

Wir schreiben Rückrufe oft über anonyme Funktionen.

Anonym bedeutet vereinfacht ausgedrückt eine Funktion ohne Namen, die in der Regel sofort ausgeführt wird. Aber wie verhält es sich im Vergleich zu benannten Funktionen (Funktionen mit Namen)?

Wir können einen Computer finden, der Shell-Befehle ausführen und eine große Anzahl von Funktionsaufrufen verwenden kann, um die Ausführungszeit der beiden zu sehen:

anonymous.js

Code kopieren Der Code lautet wie folgt:

Var-Anzahl = 100000000
, Summe = 0
while (count--) (function() { sum })()

Führen Sie es aus
Code kopieren Der Code lautet wie folgt:

$ Zeitknoten anonym.js
echte 0:1,456 Minuten
Benutzer 0m0.015s
sys 0m0.031s

Werfen wir einen Blick auf benannte Funktionen

named.js

Code kopieren Der Code lautet wie folgt:

Var-Anzahl = 100000000
, Summe = 0

var cb = function() {
Summe
}

while (count--) cb()


Führen Sie es aus
Code kopieren Der Code lautet wie folgt:

$ Zeitknoten namens.js
echte 0m0,575s
Benutzer 0m0.000s
sys 0m0.046s

Benannte Funktionen sind viel schneller, warum ist das so? Tatsächlich ist es nicht schwer zu erklären, dass anonyme Funktionen den Rückruf jedes Mal neu interpretieren müssen, benannte Funktionen jedoch nur einmal, sodass die Leistung verbessert wird. Der Test ergab jedoch, dass diese Verbesserung sehr, sehr gering ist Es besteht keine Notwendigkeit, einen sehr praktischen Rückruf als weitere Variable zu schreiben.

Darüber hinaus gibt es zwei Möglichkeiten, benannte Funktionen zu schreiben:

Funktionsausdruck

Code kopieren Der Code lautet wie folgt:

var func = function() {
console.log('a')
}

Funktionsdeklaration
Code kopieren Der Code lautet wie folgt:

Funktion func() {
console.log('b')
}

Tatsächlich kann es zu Problemen kommen, wenn diese beiden zusammen verwendet werden, z. B.
Code kopieren Der Code lautet wie folgt:

var func = function() {
console.log('a')
}
Funktion func() {
console.log('b')
}
//Die Ausgabe ist: a

Daher wird derzeit hauptsächlich die Form des Funktionsausdrucks verwendet, aber wie ist die Leistung der Funktionsdeklaration?

named2.js

Code kopieren Der Code lautet wie folgt:

Var-Anzahl = 100000000
, Summe = 0

Funktion cb() {
Summe
}

while (count--) cb()


Führen Sie es aus und vergleichen Sie die beiden
Code kopieren Der Code lautet wie folgt:

$ Zeitknoten namens.js
echte 0m0,553s
Benutzer 0m0.000s
sys 0m0.015s

$ Zeitknoten mit dem Namen 2.js
echte 0m0,529s
Benutzer 0m0.000s
sys 0m0.047s


Es scheint, dass die Funktionsdeklaration etwas schneller sein wird, aber die Geschwindigkeit ist sehr, sehr nicht offensichtlich. Ich persönlich empfehle immer noch, eine Funktionsdeklaration zu schreiben.

PS: Diese Daten wurden mit Git-Base unter Windows 7 getestet.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn