दिलचस्प पोस्ट
जावास्क्रिप्ट समापन काम नहीं कर रहा है एक UITableView में एकाधिक कॉलम कैसे प्रदर्शित करें? Jquery रीसाइजिंग छवि कैसे बाइट सरणी और बाइट सरणी में base64 को स्ट्रिंग को एंड्रॉइड में परिवर्तित करना है? PHP में जेएसएन अनुरोध संभाल कैसे एकता में एक GameObject serialize और बचाने के लिए Javax.el.PropertyNotFoundException को पहचानना और हल करना: लक्ष्य न पहुंचने योग्य क्यों PHP चर एक $ चिह्न प्रतीक के साथ शुरू करते हैं? स्विफ्ट के साथ शाए को स्ट्रिप कैसे क्रिप्ट करना है? प्राइवेट एपीआई कॉल ढूँढनामेटमनेट विथस्टैटस डब्ल्यूसीएफ सर्विस क्लाइंट: कंटेंट टाइप टेक्स्ट / html; प्रतिक्रिया संदेश का charset = utf-8 बाध्यकारी सामग्री प्रकार से मेल नहीं खाता है रनटाइम पर जावा क्लासपाथ में फ़ाइलें जोड़ना जीजीप्लोट में फेज लेबल्स के ऑर्डर को कैसे बदला जाए (कस्टम फेट लेट लेबल्स) यूटीएफ -8 वर्ण एन्कोडिंग लड़ाइयों json_encode () दोस्त के सी # समकक्ष क्या है?

जो तेज़ और बेहतर है, स्विच केस या यदि अन्यथा है?

कौन सा बेहतर और तेज़ तरीका है: अगर या स्विच?

if(x==1){ echo "hi"; } else if (x==2){ echo "bye"; } switch(x){ case 1 ... break; default; } 

वेब के समाधान से एकत्रित समाधान "जो तेज़ और बेहतर है, स्विच केस या यदि अन्यथा है?"

आपका पहला उदाहरण केवल गलत है आपको सिर्फ else जगह के बजाय else

यदि आप if..elseif... या switch का प्रयोग करते हैं तो मुख्य रूप से वरीयता की बात है प्रदर्शन एक ही है

हालांकि, यदि आपकी सभी स्थितियां x == value साथ हैं x x == value हर स्थिति में समान होने के साथ, switch आमतौर पर समझ में आता है। अगर मैं दो स्थितियों की तुलना में अधिक है तो मैं केवल switch उपयोग करूँगा

ऐसा मामला जहां switch वास्तव में आपको एक लाभ देता है, यदि चर का भाग फ़ंक्शन कॉल है:

 switch(some_func()) { case 1: ... break; case 2: ... break; } 

तब some_func() केवल एक बार जब एक साथ कहा जाता है

 if(some_func() == 1) {} elseif(some_func() == 2) {} 

यह दो बार कहलाएगा – फ़ंक्शन कॉल के संभावित दुष्प्रभाव सहित दो बार हो रहा है। हालांकि, आप हमेशा $res = some_func(); उपयोग कर सकते हैं $res = some_func(); और फिर अपने परिस्थितियों में $res उपयोग करें – ताकि आप इस समस्या को पूरी तरह से बच सकें।

ऐसी स्थिति में जहां आप अधिक जटिल परिस्थितियों में स्विच का उपयोग नहीं कर सकते हैं – switch केवल x == y लिए कार्य करता है और y निरंतर मान होता है।

जब भी नियमों की संख्या 3 से अधिक है (पठनीयता के लिए) सामान्य नियम switch का उपयोग होता है

if / else if / else अधिक लचीला (इसलिए बेहतर) है, लेकिन switch थोड़ी तेजी से है क्योंकि यह सिर्फ एक बार कंडीशन की गणना करता है और फिर आउटपुट के लिए जांच करता है, जबकि यह हर बार करना पड़ता है

संपादित करें: लगता है जैसे switch धीमी है if सभी के बाद, मैं कसम खाता हूँ कि यह मामला नहीं था …

Phpbench.com के मुताबिक, यदि / एथिफ थोड़ा तेज है, खासकर जब कड़ी तुलना (===) का उपयोग कर रहे हैं

यहां छवि विवरण दर्ज करें

लेकिन अगर आप फ़ंक्शन पर माइक्रोसॉन्ड्स को दाढ़ी देना चाहते हैं, तो यह केवल सच बात करेगा, जिसे हजारों बार बुलाया जाएगा

यह उपयोग के आधार पर है अगर आपके पास एफएक्सपी स्थिति (ऑनलाइन, दूर, डीएनडी, ऑफ़लाइन …) है, तो उसका बेहतर उपयोग स्विच

 switch(status) { case 'online': ... } 

लेकिन अगर आप ऐसा कुछ करना चाहते हैं

 if ((last_reply.ContainsKey(name)) && (last_reply[name] < little_ago)) 

या

 if (msg.ToString()[0] == '!') 

इसका बेहतर उपयोग अगर अन्यथा

मैं मानता हूं कि कंपाइलर उन्हें दिन के अंत में बहुत समान, या शायद समान कोड में बदल देगा।

जब तक आप कुछ अजीब नहीं कर रहे हों, कंपाइलर के लिए अनुकूलन की कोशिश न करें।

साथ ही, डेवलपर का समय आम तौर पर रनटाइम से अधिक महत्वपूर्ण होता है (खेल के अपवाद के साथ), इसलिए यह इसके बेहतर पठनीय और रखरखाव करने के लिए है

मेरी राय में "अगर / अन्य" तेज है लेकिन स्विच से बेहतर नहीं है, लेकिन मुझे यह पसंद है:

 echo ($x==1?"hi":($x==2?"bye":"")); 

यदि आपको 1,2 मामलों की तरह करना है जैसे / else if / else

== का उपयोग करते समय, if ... elseif तुलना की गई है तो switch की तुलना में if ... elseif की तुलना लगभग समान है। हालांकि, === का उपयोग करते समय, if ... elseif अन्यथा लगभग 3 गुना तेज होता है (अनुसार: phpbench )।

आम तौर पर, आपको सबसे ज्यादा पठनीय और सबसे ज्यादा तुलना करते समय switch करना चाहिए। यदि प्रदर्शन एक बड़ी चिंता का विषय है और आपको किसी प्रकार के रूपांतरण करने की ज़रूरत नहीं है, तो इसका उपयोग करें if ... elseif with ===