2013-06-05 5 views
7

2 आईडी चयनकर्ताओं के बीच मतभेद का परीक्षण किया, पहले सामान्य है: $('#lol') और दूसरा एक ही लेकिन कई कोष्ठक के बीच रखा गया है: $((((('#lol')))))jQuery चयनकर्ता प्रदर्शन: एक जिज्ञासु मामले

मैं jsperf पर एक परीक्षण शुरू किया, फ़ायरफ़ॉक्स और क्रोम के साथ। परिणाम दिलचस्प हैं: फ़ायरफ़ॉक्स के साथ, पहला (सामान्य चयनकर्ता) 40% धीमा (!!!) है। क्रोम के साथ, दूसरा 0.84% ​​धीमा है।

ऐसा अंतर क्यों? क्या कोई इसे समझा सकता है?

क्या jsperf.com विश्वसनीय है?

http://jsperf.com/ghshshsrd

मैं मनोरंजन के लिए, दूसरों के ब्राउज़रों पर परीक्षण किया जाएगा:

आप परीक्षण यहाँ देख सकते हैं।

(संपादित करें: मैं मैक ओएस एक्स पर कर रहा हूँ, वैसे)

+0

ओपेरा और सफारी के साथ भी परीक्षण किया गया, कोई वास्तविक अंतर नहीं। केवल फ़ायरफ़ॉक्स में यह अजीब परिणाम – FLX

+1

नहीं है यदि आप फ़ायरफ़ॉक्स ब्राउजर से परीक्षण चलाते हैं, मेरे लिए दोनों समान हैं –

+0

मुझे लगता है कि ग्राफ में दिखाया गया अनुमानित परिणाम अपराधी –

उत्तर

2

के रूप में अन्य लोगों ने बताया है, दो बयानों के लिए प्राप्त परिणामों के बीच मतभेद नगण्य है। यहां तक ​​कि जब testing the same statement twice, यह बहुत ही असंभव है कि आप दो समान ओपीएस/सेकंड मूल्यों का उत्पादन करेंगे।

यह भी देखा गया कि आपने "एक परीक्षण" कहा, "एकाधिक परीक्षण" नहीं। यदि परिणाम अजीब लग रहा था, तो बस परीक्षा दोहराएं - भूलें मत भूलें यदि आपका ब्राउज़र परीक्षण भाग के माध्यम से संसाधन भाग के माध्यम से भूखा था।

जेएसपीरफ़ हमेशा मेरे लिए विश्वसनीय रहा है - ऑप्टिमाइज़ेशन तकनीकों (this being a classic example) का प्रदर्शन करने के लिए उपयोगी होने के लिए पर्याप्त है।

0

असल में कोई तत्व चुनने के लिए दोनों तरीकों के बीच कोई वास्तविक अंतर नहीं है (पठनीयता को छोड़कर)। मैं एक नया jsperf परीक्षण का मामला जो और अधिक निष्पक्ष मामले उपायों बनाया:

->http://jsperf.com/jquery-selector-performance-20130730

क्यों अपने परीक्षण परिणाम इतनी अजीब है? पहले कोड $(((('#lol')))) की जाँच करें और इस $('#lol') के बाद: यह अधिक संभावना है कि अपने परीक्षण-परिदृश्य दोनों परीक्षणों

तुम जाओ और अपने प्रारंभिक परीक्षण की कसौटी पर क्रम को उल्टा कर सकते हैं के बीच किसी भी वास्तविक प्रदर्शन अंतर से गलत है। मुझे पूरा यकीन है कि आपको अपने वर्तमान परीक्षण के सटीक विपरीत परिणाम मिलेंगे ;-)

मैं इस पर एक विशेषज्ञ नहीं हूं, लेकिन एक भाग के लिए, ब्राउज़र आज बहुत स्मार्ट हैं और जावास्क्रिप्ट कोड/चर । इसके अलावा jQuery पहले कॉल के बाद मूल्य को स्टोर करेगा।

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