diapositive 30 in Paul Irish's blog menzionati:È .find() più veloce del metodo di selezione del discendente di base?
$('#container').find('div.robotarm')
è più veloce di $('#container div.robotarm')
è vero?
diapositive 30 in Paul Irish's blog menzionati:È .find() più veloce del metodo di selezione del discendente di base?
$('#container').find('div.robotarm')
è più veloce di $('#container div.robotarm')
è vero?
Forse in una versione precedente di jQuery era il caso. Tuttavia, l'espressione
$('#container div.robotarm')
viene normalizzato mediante jQuery in
$('#container').find('div.robotarm')
Quindi l'unica ragione $('#container div.robotarm')
dovrebbe essere più lenta a causa della chiamata di funzione sovraccarico. Ma sarebbe davvero una differenza banale.
Se quella chiamata non è stata normalizzata, sizzle
(motore di selezione CSS Resigs) verrebbe utilizzato per cercare quell'elemento (da destra a sinistra). Questo naturalmente sarebbe molto più lento.
Qualcuno può citare qualche documentazione per eseguire il backup di questo? Impossibile trovare qualcosa su una ricerca rapida su google. –
Dal momento che hai chiesto un parere, non importa.
È sempre possibile trovare un caso in cui uno si esegue più rapidamente dell'altro in alcuni browser con una determinata configurazione del DOM. Non c'è bisogno di dividere i capelli.
Questo è corretto solo durante la ricerca per ID.
Ma quando eseguiamo la ricerca per nome tag, restituisce risultati diversi nei browser moderni in cui $('div').find('p')
è più lento di 10 poiché quest'ultimo utilizza querySelector()
.
Direi che le opinioni non valgono nulla. Crea alcuni benchmark ed eseguili più volte (preferibilmente su browser diversi) e controlla i risultati. Questo è l'unico modo per ottenere una risposta definitiva, IMO. –
https://forrst.com/posts/I_ran_a_little_speed_test_on_jQuery_selectors_Y-3mQ Questo potrebbe aiutare. – Kriem