2012-01-13 4 views
18

क्या निम्न दो पंक्तियों के बीच कोई गति/दक्षता अंतर है।": नहीं" और ".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 औसत से लगभग दोगुना है। कुल मिलाकर हालांकि यह प्रदर्शन आपके समग्र निष्पादन समय का एक बहुत छोटा हिस्सा होगा।

jQuery डॉक्स राज्य:

.not() प्रणाली में जटिल चयनकर्ताओं या चर धकेलने की तुलना में अधिक पठनीय चयन के साथ उपलब्ध कराने के खत्म हो जाएगा: नहीं() चयनकर्ता फिल्टर। ज्यादातर मामलों में, यह एक बेहतर विकल्प है।

तो वास्तव में यह तय करने के लिए आप पर निर्भर है कि एक दूसरे के अंश आपको पठनीयता से अधिक लाभ प्राप्त करते हैं या नहीं।

+0

मेरी इच्छा है कि मैं जवाब के रूप में दोनों को चुन सकता था क्योंकि आपने दोनों ने अलग-अलग कारणों से सही प्रश्न का उत्तर दिया था। – kwelch

+0

इसके लिए +1 क्योंकि इससे मुझे jsperf पर ग्राफ को समझने में मदद मिली। मैं इस बार इसे पीछे पढ़ रहा हूं। – Richard

+1

इसके अलावा, पठनीयता कुछ हद तक व्यक्तिगत भी है। मुझे वास्तव में पठनीयता के साथ कोई समस्या नहीं है: नहीं। विशेष रूप से अन्य चीजों की तुलना में मुझे कोडर देखते हैं जो बहुत कम पठनीय होते हैं। – rooby

13

ब्राउज़र पर निर्भर करता है।

ब्राउज़र का समर्थन करने वाले querySelectorAll के साथ एक प्रदर्शन बढ़ावा मिलता होगा ...

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

... क्योंकि यह एक मान्य चयनकर्ता है। पुराने ब्राउज़र (आईई 7 और निचले) नहीं होंगे।

हालांकि आपको :not() चयनकर्ता से सावधान रहना होगा। jQuery (Sizzle) इसे गैर-मानक चयनकर्ताओं के साथ विस्तारित करता है, इसलिए qSA को तोड़ना आसान है।

संबंधित मुद्दे