2012-01-13 3 views
18

다음 두 줄 사이에 속도/효율 차이가 있습니까? ": not"및 ".not()"선택자 사이의 성능 차이가 있습니까?

$("table td").not(":first-child") 

$("table td:not(:first-child)") 

나는 그것을 개체를 제거하지만, 실제 차이가 있으며 상당한 때문에 첫 번째가 더 좋을 것이라고 생각합니다.

감사합니다.

+0

측정 해 보셨습니까? –

+7

http://jsperf.com/jquery-css3-not-vs-not –

+0

정확하게 측정하는 방법을 모르겠다는 것이 내 질문 일 수도 있습니다. 나는 더 작은 페이지가 아무런 문제도 없을 것이라고 추측 하겠지만 어느 시점에 차이가 나는 것입니까? – kwelch

답변

24

jsperf 테스트에서 볼 수 있듯이 :not은 평균 약 2 배 빠릅니다. 전반적으로이 성능은 전체 실행 시간 중 매우 작은 부분 일 수 있습니다.

JQuery와 문서 상태 :

냈어() 메소드에 의해 복잡 선택기 또는 변수 추진 이상 판독 선택 함께 제공 끝날 :하지() 선택기 필터. 대부분의 경우 더 나은 선택입니다.

실제로 두 번째 분수가 가독성보다 중요한지 결정하는 것은 당신에게 달려 있습니다.

+0

두 가지 모두 올바른 이유에 대해 질문에 답변했기 때문에 둘 다 대답으로 선택할 수 있었으면 좋겠습니다. – kwelch

+0

+1은 jsperf의 그래프를 이해하는 데 도움이 되었기 때문에 +1했습니다. 나는이 모든 것을 거꾸로 읽었습니다. – Richard

+1

또한 가독성이 다소 개인적입니다. 나는 정말로 다음과 같은 가독성에 문제가 없다. 특히 코더가하는 것보다 훨씬 덜 읽을 수있는 다른 것들과 비교하면. – rooby

13

브라우저에 따라 다릅니다. querySelectorAll가 가진 성능 향상을 얻을 것이다 지원

브라우저 ...

$("table td:not(:first-child)") 

... 유효한 선택이기 때문이다. 이전 브라우저 (IE7 이하)은 그렇지 않습니다.

그래도 :not() 선택자와 조심해야합니다. jQuery (Sizzle)는 비표준 선택기로이를 확장하므로 쉽게 qSA을 나눌 수 있습니다.

관련 문제