2013-07-19 15 views
10

मैंने एक उत्तर खोजने का प्रयास किया है, और मुझे संबंधित प्रश्न मिला है, और जब वे मेरे निष्कर्षों की पुष्टि करते हैं (that one multiple selector call is slower than multiple single selector calls) उनमें से कोई भी मुझे क्यों नहीं बताता है।एकाधिक चयनकर्ता बनाम एकल चयनकर्ता प्रदर्शन

मूल रूप से, जब आप इस कोड को चलाएँ:

$("#one, #two").hide(); 
$("#one, #two").show(); 

इस कोड के खिलाफ:

$("#one").hide(); 
$("#two").hide(); 
$("#one").show(); 
$("#two").show(); 

फिर बाद में तेजी के बारे में 50% से किया जाएगा।

हालांकि, एक बार जब हम तीसरे चयनकर्ता को जोड़ते हैं, तो प्रदर्शन अंतर 39% तेज होता है।

चौथा चयनकर्ता अंतर: 26% तेज।

पांचवां: 30% तेज।

छठी: 31% तेज।

दस: 31% तेज।

enter image description here

प्रदर्शन लगभग 6 चयनकर्ताओं पठार के लिए लगता है:

तो हम कुछ है कि इस तरह दिखता है मिल (इन मूल्यों को ध्यान दें है एक 5% मार्जिन के बारे में में लेकर लग रहे हैं)। यह कभी भी एक कॉल के माध्यम से प्रत्येक को करने की तुलना में 31% धीमी होने की तुलना में 'तेज' नहीं लगता है। वह क्यों है?

व्यक्तिगत रूप से, मुझे प्रति कॉल एकाधिक चयनकर्ताओं का उपयोग करना अच्छा लगता है, लेकिन ऐसा लगता है कि यह (अपेक्षाकृत) बड़ा प्रदर्शन हिट है। यह (नहीं) कब उपयोग करने के लिए उपयुक्त होगा?

+1

दिलचस्प। मैंने हमेशा माना था कि पहला मामला (एकाधिक) तेज होगा। कक्षा चयनकर्ताओं, समान प्रदर्शन के बारे में क्या? –

+0

यह मेरी धारणा भी है, इसलिए मैं इससे आश्चर्यचकित था। मैंने कक्षा चयनकर्ताओं की जांच नहीं की है, लेकिन यह देखने लायक है। मैं बाद में कुछ परीक्षण चलाऊंगा। – Johannes

+0

मुझे * अपेक्षाकृत बड़ा * के बारे में निश्चित नहीं है। संदर्भ कोड पहले से ही माइक्रोसॉन्ड के नीचे चलता है तो बड़ी तस्वीर में 50% तेज नहीं होगा। –

उत्तर

4

दोनों मामलों में आप आईडी पर काम करते हैं, इसलिए इसे मूल getElementById कॉल में परिवर्तित किया जा सकता है।

हालांकि, 2 अतिरिक्त चीजें

  1. किया 1 मामले में किया जाना चाहिए कोमा संसाधित किया जाना चाहिए, ताकि अतिरिक्त पार्स शामिल
  2. 2 परिणाम, विलय कर दिया जाना चाहिए है जो आपरेशन द्वारा jQuery asserts that they are returned in the same order as in DOM

मुझे लगता है कि दूसरा ऑपरेशन सबसे अधिक समय लेता है।

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