दो दिन पहले, जब मुझे jsperf.com मिला, जिसमें कई जावास्क्रिप्ट प्रदर्शन परीक्षणों का संग्रह है, तो मैंने कई परीक्षणों को ब्राउज़ किया।फ़ायरफ़ॉक्स और अन्य ब्राउज़र क्यों गणना करते हैं कि कौन सा नंबर बड़ा है?
परीक्षणों में से एक this था, जो Math.min(a,b)
बनाम a<b?a:b
की तुलना करता है। जब मैंने Google क्रोम पर यह परीक्षण चलाया, तो यह पता चला कि a<b?a:b
Math.min(a,b)
से अधिक तेज़ है (क्रोम 14 पर, पहला एक 53,661,381 ops/s
है और दूसरा एक 419,830,711 ops/s
है)। अन्य वेब ब्राउज़र के समान परिणाम हैं।
हालांकि, फ़ायरफ़ॉक्स पर, परिणाम विपरीत है। Math.min(a,b)
a<b?a:b
से बहुत तेज है! सबसे पहले एक 374,219,869 ops/s
है और दूसरा एक 79,490,749 ops/s
फ़ायरफ़ॉक्स 6.
पर है जब मैं फेसबुक पर पोस्ट किया, किसी ने कि "जब से फ़ायरफ़ॉक्स ओपन सोर्स प्रोजेक्ट है, डेवलपर्स अनुकूलित Math.min
कहा, लेकिन गूगल क्रोम नहीं था चूंकि Google क्रोम क्रोमियम का सिर्फ एक संशोधन है ", लेकिन (उपर्युक्त कथन के बगल में यह बिल्कुल सही नहीं है) जिसका कोई मतलब नहीं है, क्योंकि यह कारण बताता नहीं है कि Google क्रोम का a<b?a:b
और फ़ायरफ़ॉक्स का Math.min(a,b)
समान गति में प्रदर्शन करता है, और Google क्रोम का Math.min(a,b)
और फ़ायरफ़ॉक्स का a<b?a:b
एक ही गति में प्रदर्शन करता है, क्योंकि अगर फ़ायरफ़ॉक्स Google क्रोम से तेज़ है, तो गूगल ई क्रोम का Math.min(a,b)
फ़ायरफ़ॉक्स के a<b?a:b
से बहुत धीमा होना चाहिए।
सारांश:
- अन्य ब्राउज़र पर,
a<b?a:b
Math.min(a,b)
से तेज है। - हालांकि, फ़ायरफ़ॉक्स पर
Math.min(a,b)
a<b?a:b
से तेज़ है। Math.min(a,b)
Firefox पर की गति के बाद से फ़ायरफ़ॉक्स गूगल क्रोम परMath.min(a,b)
की गति ≒ पर गूगल क्रोम परa<b?a:b
की गति औरa<b?a:b
की गति ≒, "फ़ायरफ़ॉक्स धीमी है" या "Firefox तेज है" एक कारण नहीं हो सकता ।
क्या कोई कारण है कि यह कैसे होता है?
कारण? इसके अलावा नामित ब्राउज़रों में से प्रत्येक के पास जावास्क्रिप्ट का अपना कार्यान्वयन है और इसलिए उन्हें अनुकूलित करने के लिए स्वतंत्र हैं। – Jamiec
@ जैमिक लेकिन मुझे लगता है कि 'ए <बी? ए: बी'' Math.min (ए, बी) 'से तेज है, क्योंकि 1.' Math.min (a, b) 'में 'a JiminP
@Jiminip' Math.min' पर कॉल संकलित किया जाएगा और विधि शायद इनलाइन हो जाएगी। शायद फ़ायरफ़ॉक्स में यह सुपर-फास्ट कोड के साथ रेखांकित है जबकि 'if'' if' बनी हुई है। – xanatos