name jquery val()
Rendimiento del selector jQuery: un curioso caso (2)
Como otros han señalado, las diferencias entre los resultados obtenidos para las dos declaraciones son insignificantes. Incluso cuando se prueba la misma declaración dos veces , es muy poco probable que se obtengan dos valores de Ops / sec idénticos.
También notó que dijo "una prueba", no "pruebas múltiples". Si el resultado parece extraño, simplemente repita la prueba; no se olvide de que podrían ocurrir resultados anómalos si su navegador fue privado de recursos en parte durante una prueba.
JSPerf siempre ha sido confiable para mí, lo suficiente como para ser útil para demostrar las técnicas de optimización ( este es un ejemplo clásico ).
Probé las diferencias entre 2 ID selectores, el primero es normal: $(''#lol'')
Y el segundo es el mismo, pero se coloca entre paréntesis múltiples: $(((((''#lol'')))))
Lancé una prueba en jsperf, con Firefox y Chrome. Los resultados son interesantes: con Firefox, el primero (selector normal) es un 40% más lento (!!!). Con Chrome, el segundo es 0.84% más lento.
¿Por qué tal diferencia? ¿Alguien puede explicar esto?
Es jsperf.com confiable?
Puedes ver la prueba aquí:
Voy a probar en otros navegadores, por diversión.
(Editar: estoy en Mac OS X, por cierto)
En realidad, no hay una diferencia real entre las dos formas de seleccionar un elemento (excepto la legibilidad). Creé un nuevo caso de prueba jsperf que mide más objetivamente el caso:
-> http://jsperf.com/jquery-selector-performance-20130730
¿Por qué su resultado de la prueba es tan extraño? Es más probable que su escenario de prueba sea inexacto que cualquier diferencia de rendimiento real entre ambas pruebas
Puede ir e INVERTIR el orden de prueba de su prueba inicial: primero revise el código $((((''#lol''))))
y después de este $(''#lol'')
. Estoy bastante seguro de que obtendrá el resultado exactamente opuesto de su prueba actual ;-)
No soy un experto en esto, pero por una parte, los navegadores son muy inteligentes hoy y almacenarán en caché el código / variables de JavaScript. También jQuery posiblemente almacenará el valor después de la primera llamada.