2010-06-27 6 views
30

अब, आप सभी मेरे ऊपर कूदने और कहने के लिए "आप प्रदर्शन के बारे में चिंतित हैं," इस प्रकार यह खड़े हो जाओ कि मैं इसे अति उत्साही प्रकृति की तुलना में जिज्ञासा से अधिक पूछता हूं। उस ने कहा ...जावास्क्रिप्ट और ऑपरेटर बनाम घोंसला अगर बयान: तेजी से क्या है?

मुझे उत्सुकता है कि & & ("और") ऑपरेटर के उपयोग के बीच प्रदर्शन अंतर है और बयान के रूप में घोंसला है। इसके अलावा, क्या एक वास्तविक प्रसंस्करण अंतर है? आईई, & & हमेशा प्रक्रिया दोनों कथन, या अगर पहले व्यक्ति विफल रहता है तो यह पहले व्यक्ति को रोक देगा? बयान के मुताबिक यह घोंसला से अलग कैसे होगा?

उदाहरण स्पष्ट होना:

ए) & & ("और") ऑपरेटर

if(a == b && c == d) { ...perform some code fashizzle... } 

बी बनाम) यदि बयान

if(a == b) { 
    if(c == d) { ...perform some code fashizzle... } 
} 

उत्तर

29

प्रदर्शन अंतर नगण्य है। && ऑपरेटर सही हाथ अभिव्यक्ति की जांच नहीं करेगा जब बाएं हाथ अभिव्यक्ति false का मूल्यांकन करती है। हालांकि, & ऑपरेटर दोनों की जांच करेगा, भले ही आपका भ्रम इस तथ्य के कारण हो।

इस विशेष उदाहरण में, मैं केवल && का उपयोग करके एक चुनना चाहता हूं, क्योंकि यह बेहतर पठनीय है।

+1

मजबूर और ऑपरेटर के बारे में पता नहीं था। यह तो दिलचस्प है! –

+14

ध्यान दें कि '/'/bitwise/और ऑपरेटर है। इसे '&&' के 'मजबूर' संस्करण के रूप में सोचना काफी सही नहीं है। उदाहरण: '1 और 2 2' 2 है जबकि' 1 और 2' 0. –

2

तरह नेस्ट if रों नेस्ट, && है आलसी।
अभिव्यक्ति a && b केवल b का मूल्यांकन करेगी यदि a सत्य है।

इसलिए, दोनों मामलों को कार्यक्षमता और प्रदर्शन दोनों में पूरी तरह से समान होना चाहिए।

+2

शायद आप का मतलब है "केवल सच्चाई होने पर बी का मूल्यांकन करेगा"। –

11

यदि आप प्रदर्शन के बारे में चिंतित हैं, तो सुनिश्चित करें कि a==bc==d से अधिक विफल होने की संभावना है। इस तरह if कथन जल्दी विफल हो जाएगा। http://jsperf.com/simey-if-vs-if

लगता प्रदर्शन अंतर दोनों के बीच अविश्वसनीय रूप से नगण्य है,:

+1

क्या कोई इस बारे में कुछ प्रकाश डाल सकता है कि मुझे अपने उत्तर पर एक वोट क्यों मिला? –

+0

मुझे नहीं पता - आपका सुझाव मुझे ठीक लगता है इसलिए मैंने आपको ऊपर उठाया है। –

+0

मेरा अनुमान है -1 था क्योंकि यह * प्रतिक्रिया * को संबोधित नहीं करता है, जो कि सामान्य अनुकूलन के बजाय जावास्क्रिप्ट के किसी विशेष बिंदु के बारे में जिज्ञासा था। – Matchu

1

एक peformance परीक्षण स्पष्ट चीजों को मदद कर सकता है हालांकि @ गर्ट का उल्लेख है, जल्दी विफल होने से चीजों में सुधार होता है।

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