Gibt es einen Leistungsunterschied zwischen dem jquery-Selektor oder einer Variablen?

8

In letzter Zeit frage ich mich, ob es einen Leistungsunterschied zwischen der Wiederholung des Selektors gibt, oder einfach nur eine Var verwenden und den Selektor darin speichern und nur darauf verweisen.

%Vor%

oder nur

%Vor%

Ich bevorzuge den zweiten Weg, weil es sauberer aussieht und besser wartbar ist.

    
Baijs 22.10.2009, 10:13
quelle

6 Antworten

7

Es gibt sicherlich einen Leistungsunterschied, da Sizzle nicht jedes Mal ausgeführt werden muss, aber es gibt auch einen Funktionsunterschied. Wenn sich der Domänenname zwischen dem ersten und dritten Aufruf ändert, enthält das zwischengespeicherte jQuery-Objekt immer noch den alten Satz von Elementen. Dies kann häufig auftreten, wenn Sie ein Set zwischenspeichern und dann in einem Callback verwenden.

    
Alex Sexton 22.10.2009, 10:20
quelle
4

Ich bevorzuge den zweiten Weg. Es wird leichter, den Code beizubehalten, selbst wenn sich eine Element-ID oder -Klasse ändert.

    
rahul 22.10.2009 10:17
quelle
3

Es gibt einen anderen schnellen Weg. Es ist so schnell wie Ihr zweiter Code.

%Vor%     
jantimon 22.10.2009 10:20
quelle
2

auf Ghommeys Methode aufwenden

%Vor%

Schneller und speichert das Objekt zur späteren Verwendung.

    
dotty 22.10.2009 10:23
quelle
1

Der zweite Weg hat einen Leistungsvorteil. Es kann sein oder nicht, aber es ist besser. In der ersten Version machst du 4mal dom traversal, in der zweiten nur 2.

Ziemlich guter Artikel über die Beschleunigung von jQuery hier: Ссылка

    
smack0007 22.10.2009 10:21
quelle
1

Speichern der Ergebnisse von Ihnen jQuery-Auswahl zu einer Variablen ist schneller. Dies liegt daran, dass jQuery nicht jedes Mal nach den Ergebnissen suchen muss, wenn Sie versuchen, auf sie zuzugreifen.

Ich habe einige Leistungsmetriken zusammengestellt: Ссылка

In Chrome 26.0.1410.63 unter Mac OS X 10.8.2:
Auswahl: 40.276 Ops / Sek Speichern der Variablen: 594.031.358 Ops / Sek.

    
calvintennant 10.04.2013 16:40
quelle