2012-02-27 8 views
7

Antes de esto, siempre he usado el selector gt para seleccionar todos los elementos excepto el primero. Ahora encontré la solución que me parece más elegante. Es usar :not(:first) en lugar de :gt(0).
¿Hay alguna diferencia en el rendimiento de estos selectores y cuál sugiere utilizar?: gt (0) vs: not (: first) vs .slice (1)

EDITAR: Como se mencionó Felix King, .slice(1) es otra opción para seleccionar todos los elementos excepto el primero. Entonces, ¿qué es más rápido?

+2

it.http prueba: //jsperf.com/ – xdazz

+8

También puede intentar '.slice (1)' en lugar de un selector personalizado . –

+0

Ambos son lentos, el método sugerido por @FelixKling debería ser el más rápido. –

Respuesta

10

¡Tiempo para un poco de perfilar! Dada una página que está vacía aparte de diez <span> en caché en una variable llamada spans y 10,000 iteraciones, obtengo 824ms para spans.filter(':gt(0)') y 1276ms para spans.not(':first').

Figura consigue utilizando console.time() y console.timeEnd() en Firefox 11.

Teniendo en cuenta que tenía que hacer 10k iteraciones para golpear la marca de 1 seg me gustaría sugerir que no importa?

+0

¿Le gustaría agregar una comparación del método de corte de @Felix Kling que algunos comentaristas sugieren que es mejor? – Chris

+1

¡Claro! Usando el método 'slice (1)' la misma prueba sale como 79ms - aproximadamente 10 veces más rápido que ': gt (0)' –

+0

Pensé que: no: primero funcionaría más rápido, gracias por las pruebas. Y +1 para la comparación de slice (1) también. –