2016-04-27 8 views
0

Meine Anwendung ist ein lokaler Server, der etwa 2/3 Anfragen pro Sekunde erhalten.Javascript-Leistung, Funktion neu erstellen oder binden dann?

Bei jeder Anfrage, es speichert und Aktualisierungsdaten, Prozess eine Berechnung, Ansicht aktualisieren (reagieren), ...

Ich möchte wissen, was schneller ist, wenn ich Verschlüsse verwenden müssen:

  • erstellen sie einfach die Funktion, wo ich es brauche:

    var parentValue = 'ok';

    randomAsyncFunction(function() { console.log(parentValue); }

  • Erstellen Sie eine "globale" -Funktion und dann den Rückruf mit benötigten Werte binden:

    function testCallback(value) { console.log(value); }

    var parentValue = 'ok'; randomAsyncFunction(testCallback.bind(undefined, parentValue));

Hinweis: Thesen Pseudo-Codes ausgeführt werden 2/3 mal pro Sekunde. Für das zweite Beispiel wird die testCallback-Funktion einmal erstellt, und die Bindung wird aufgerufen, anstatt die Funktion neu zu erstellen.

Also, ist es besser oder schlechter, das zweite Beispiel zu verwenden?

+0

23 Anfragen pro Sekunde? Das ist garnichts. Sie sollten sich nicht um die Leistung kümmern. – Bergi

Antwort

1

Sowohl bind als auch die Closure-Funktion expression erstellen ein neues Funktionsobjekt. Ihr Unterschied in der Leistung wird vernachlässigbar sein. Wenn es Ihnen wirklich wichtig ist, führen Sie einen Benchmark mit Ihrem tatsächlichen Code und realen Daten durch, um zu sehen, welche Lösung schneller ist.

In Ihrem Fall sollten Sie nur darauf achten, welche Lösung lesbarer und wartbarer ist. Keines ist strikt besser oder schlechter als das andere, man muss selbst entscheiden, welches man besser mag.