2009-08-05 13 views
11

में त्रिगुट ऑपरेटर जावास्क्रिप्ट में Math.max की शैली, यह ऐसा करने के लिए बेहतर है?स्पीड और बनाम जावास्क्रिप्ट

+2

यदि कुछ भी नहीं, तो गति के सरल प्रश्नों के लिए आपके पास हमेशा अपने हाथों में परीक्षण करने की क्षमता होती है। – Amber

उत्तर

11

दूसरा मुझे स्पष्ट लगता है क्योंकि यह कार्यान्वयन के बजाय इरादा दिखा रहा है।

मुझे ऐसी कई स्थितियों पर संदेह है जहां कोई प्रदर्शन अंतर कोई उल्लेखनीय अंतर करेगा और यह शायद कार्यान्वयन पर निर्भर करता है।

+4

उस पर +1: Math.max के साथ, लोग आपका कोड पढ़ रहे हैं ** immeditaly ** समझें कि आप क्या करने की कोशिश कर रहे हैं; के साथ?:, उन्हें कम से कम एक या दो सेकंड के लिए सोचना होगा ... यदि आपके पास कोड की 300 लाइनें हैं, तो शायद कुछ मिनट पहले से ही कोई अच्छा कारण नहीं सोच रहा है (आपके कुछ वास्तव में महत्वपूर्ण भागों को छोड़कर) आवेदन, इस प्रकार का सूक्ष्म अनुकूलन शायद व्यर्थ है) - किसने समयपूर्व अनुकूलन, और सभी बुराइयों की जड़ के बारे में कुछ कहा? ^^ –

+0

मुझे लगता है कि डोनाल्ड knuth – Breton

+2

यह वास्तव में एक कारक है जब आप 130 एमबी Float32Array वस्तुओं को पार कर रहे हैं। –

1

गति के लिए, कोई महत्वपूर्ण अंतर नहीं है।

शैली के लिए, Math.max अधिक पढ़ने योग्य है और इसलिए सबसे अच्छा विकल्प है।

0

Math.max() वही काम करता है जो आपने पहले लिखा था। यह अधिकतम लौटने के लिए टर्नरी ऑपरेटर का उपयोग करता है। इसलिए यदि आप कुछ नैनोसेकंड को छोड़ना चाहते हैं तो आप किसी फ़ंक्शन पर कॉल से बचने के लिए पहले तरीके का उपयोग कर सकते हैं। हालांकि, आईएमएचओ, यह अंतर वास्तव में प्रदर्शन को प्रभावित नहीं कर सकता है, जब तक कि आपके पास Math.max का ढेर न हो।

3

मोनो पर जेआईटी गणित को रेखांकित कर सकता है .मिन और गणित। मैक्स विधियां और कस्टम, इनलाइन, कार्यान्वयन की तुलना में बेहतर प्रदर्शन प्रदान करती हैं। हार्डवेयर द्वारा उपलब्ध होने पर यह विशेष निर्देशों का उपयोग करेगा। तो एक दिन यदि जावास्क्रिप्ट में कुछ जेआईटी (Google वी 8?) है तो शायद यह उपयोगकर्ता मैथ क्लास के लिए कुछ प्रदर्शन लाभ होगा।

6

इस जेएसपीआरएफ परीक्षण के अनुसार, यदि एक कथन सबसे अधिक प्रदर्शनकारी है।

http://jsperf.com/math-min-vs-if-condition-vs/2

हालांकि, मैं इस बात से सहमत है कि Math.max/Math.min अधिक पठनीय है।

http://jsperf.com/math-min-vs-if-condition-vs/13

कई ब्राउज़रों पर मेरे जांच दर्शाती है कि Math.min, त्रिगुट ऑपरेटर और एक अगर बयान इसी तरह करते हैं:

+0

धन्यवाद। आपके परीक्षण का उपयोग करके मुझे ये परिणाम मिल गए: 'function' -> 7% धीमी,' Math.min' -> 1% धीमी, 'if' -> सबसे तेज़। – Luke

1

यहाँ एक JSPerf परीक्षण है जो आप अपने ब्राउज़र (ओं) पर यह जांच कर सकते हैं।

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