इस पेज के लेखक: http://24ways.org/2011/your-jquery-now-with-less-suck का दावा है कि jQuery चयनकर्ता $('#id').find('p')
$('#id p')
तेजी से है , हालांकि यह संभवतः एक ही परिणाम उत्पन्न करता है यदि मैं सही ढंग से समझता हूं। इस अंतर का कारण क्या है?
उत्तर
क्योंकि $('#id').find('p')
करने के लिए अनुकूलित है ...
document.getElementById('id').getElementsByTagName('p');
... जबकि मैं $('#id p')
अनुमान लगा रहा हूँ या तो querySelectorAll
का उपयोग करेगा, यदि उपलब्ध हो, या JavaScript आधारित चयनकर्ता इंजन नहीं तो।
आपको ध्यान रखना चाहिए कि प्रदर्शन में ब्राउज़र के बीच हमेशा भिन्नता होती है। ओपेरा को बेहद तेज querySelectorAll
माना जाता है।
इसके अलावा, jQuery के विभिन्न संस्करण विभिन्न अनुकूलन के साथ आ सकते हैं।
यह हो सकता है कि $('#id p')
(या वर्तमान में) को पहले संस्करण के समान अनुकूलन दिया जाएगा।
मुझे लगता है कि 'querySelectorAll (' # id p ')' भी बहुत अनुकूलित है। प्रदर्शन मतभेदों का परीक्षण किया जाना चाहिए, जोर नहीं दिया। – Tomalak
@ टोमालक: मैंने यह जानने के लिए 'qSA' का पर्याप्त परीक्षण किया है कि अधिकांश ब्राउज़रों में यह वास्तव में तुलना में काफी धीमी है। यह एक यादृच्छिक दावा नहीं है। * ओपेरा * के बारे में मेरा अपडेट देखें। –
मैंने यह नहीं कहा कि क्यूएसए हमेशा तेज होगा। मैंने कहा, "मैं मानता हूं" * वास्तव में, मेरे बिंदु को साबित करने के लिए। आखिरकार, jQuery और ब्राउज़र संस्करणों में व्यापक मतभेदों के कारण, इस तरह के एक सामान्यीकृत कथन को एक तरफ या दूसरे का समर्थन करना बहुत मुश्किल है। – Tomalak
यह ब्राउज़र विशिष्ट है क्योंकि jQuery उपलब्ध होने पर querySelectorAll
का उपयोग करता है। जब मैंने वेबकिट में परीक्षण किया तो यह वास्तव में तेज़ था। चूंकि यह querySelectorAll
को इस मामले के लिए अनुकूलित किया गया है।
वेबकिट के अंदर, यदि संपूर्ण चयनकर्ता #<id>
है और उस आईडी के साथ दस्तावेज़ में केवल एक तत्व है, तो इसे getElementById
पर अनुकूलित किया गया है। लेकिन, अगर चयनकर्ता कुछ और है, querySelectorAll
दस्तावेज को उन तत्वों की तलाश करता है जो मेल खाते हैं।
हाँ, इस मामले को अनुकूलित करना संभव होना चाहिए ताकि वे वही कर सकें - लेकिन अभी, कोई भी नहीं है। getElementById
का उपयोग करना है या नहीं, यह तय करने के लिए आप SelectorDataList::canUseIdLookup
का उपयोग करते हैं, SelectorDataList::execute
में आप इसे here देख सकते हैं। यह इस तरह दिखता है:
if (m_selectors.size() != 1)
return false;
if (m_selectors[0].selector->m_match != CSSSelector::Id)
return false;
if (!rootNode->inDocument())
return false;
if (rootNode->document()->inQuirksMode())
return false;
if (rootNode->document()->containsMultipleElementsWithId(m_selectors[0].selector->value()))
return false;
return true;
आप एक गैर वेबकिट ब्राउज़र में परीक्षण किया गया है, तो यह है कि यह समान अनुकूलन याद आ रही है संभव है।
- 1. आईडी चयनकर्ता से तत्व चयनकर्ता अधिक विशिष्ट कैसे है?
- 2. आईडी ('# आईडी') क्यों सच है यदि आईडी मौजूद नहीं है?
- 3. आईफोन पी 2 पी - क्या 1 से अधिक उपकरणों से कनेक्ट करने का कोई तरीका है?
- 4. jQuery आईडी चयनकर्ता ("#id") ऐरे
- 5. आईडी चयनकर्ता में jQuery डॉट?
- 6. वेबआरटीसी पी 2 पी -
- 7. पी 2 पी आधारित समाधान
- 8. स्ट्रिंग concatenation सरणी से अधिक तेजी से क्यों शामिल है?
- 9. पी: श्रोता
- 10. jQuery क्रमबद्ध चयनकर्ता ("आईडी" बनाम "कक्षा")?
- 11. क्या सी में पी 2 पी ढांचा है?
- 12. पी कैसे मिटाएं: पी से संदेश: बंद पर संवाद?
- 13. पी 3 पी नीति आईई
- 14. पी/Invoke
- 15. सी ++ डीएल से सी # पी/
- 16. पी को कैसे संदर्भित करें: p में कमांड लिंक्स: डेटा से पी: ब्लॉकयूआई ट्रिगर?
- 17. सी ++ और वीओआईपी पी 2 पी
- 18. डुप्लिकेट आईडी के स्क्रू अप jquery चयनकर्ता करता है?
- 19. JQuery चयनकर्ता: विशिष्ट वर्ग * और * आईडी
- 20. PrimeFaces/JSF घटक आईडी पी के भीतर से नहीं मिला: datatable
- 21. विंडोज मेट्रो अनुप्रयोगों में कोई पी 2 पी नहीं है?
- 22. वेब पी 2 पी वीडियो टकराव समाधान
- 23. 'पी 0' <'पी! 'पायथन और पोस्टग्रेस्क्ल
- 24. पी 4 डिफ/पी 4 फ़ोल्डर डिफ
- 25. पी 2 पी (ब्राउज़र को ब्राउज़र) जावा
- 26. पी 4
- 27. पी # सिंटैक्स पी/सिग्नल के लिए मार्शलए
- 28. jQuery .not(), आईडी
- 29. Jquery - आईडी
- 30. "जावप" में "पी" क्या है?
क्या आपने इसका परीक्षण भी किया था? – Tomalak