विचार करें:
यदि (condition1) {// कोड ब्लॉक 1} और {/ / कोड ब्लॉक 2}
अगर मुझे पता है कि condition1
हो जाएगा तो true
अधिकतर समय, तो मुझे तर्क का कोड चाहिए के रूप में लिखित, के बजाय:
अगर (! Condition1) {// कोड ब्लॉक 2} और {// कोड ब्लॉक 1}
के बाद से मैं दूसरे कोड ब्लॉक में jump
के जुर्माना से बचें (नोट: मेरे पास विधानसभा भाषा का सीमित ज्ञान है) क्या यह विचार स्विच
स्टेटमेंट्स और केस
लेबल्स के आगे ले जाता है?
स्विच (myCaseValue) {case मामले 1: // कोड ब्लॉक 1 ब्रेक ; मामले Case2: // कोड ब्लॉक 2 ब्रेक; // आदि}
अगर मुझे पता है कि एक मामले अधिक बार हो जाएगा, तो मैं मामले
लेबल्स के आदेश को पुनर्व्यवस्थित कर सकता हूं ताकि यह अधिक कुशल हो ? क्या मैं? मेरे कोड में मैं केस लेबल्स को वर्णानुक्रम में कोड पठनीयता के लिए आदेश दे रहा था, इसके बिना वास्तव में इसके बारे में सोच रहा था। क्या यह माइक्रो-ऑप्टिमाइज़ेशन है?
आधुनिक हार्डवेयर के लिए कुछ तथ्य जैसे x86 या x86_64:
< उल>आप Agner में शाखा भविष्यवाणी के बारे में और अधिक पढ़ सकते हैं, यदि वे बहुत लंबे समय तक नहीं हैं, तो "दोबारा उठाए गए नोट-लेड" जैसे छोटे दोहराए जाने वाले पैटर्न का अनुमान लगाया जा सकता है। डोंगी उत्कृष्ट
स्विच स्टेटमेंट आमतौर पर कंपाइलर द्वारा एक कूद तालिका द्वारा प्रतिस्थापित किया जाता है ज्यादातर मामलों में मामलों के क्रम में कोई फर्क नहीं पड़ेगा। यहां पर अप्रत्यक्ष छलांग के लिए भविष्यवाणी तंत्र भी हैं।
तो सवाल यह नहीं है कि अगर आपके कूदने की अधिक संभावना है, तो यह कम से कम आपके द्वारा चलने वाले हार्डवेयर के लिए अनुमान लगाए जाने की संभावना है पर आपका कोड यह बिल्कुल आसान प्रश्न नहीं है। लेकिन यदि आपके पास एक यादृच्छिक (या छद्म यादृच्छिक) स्थिति के आधार पर शाखाएं हैं, तो संभव है कि आप इसे एक बंटाहीन कथन के रूप में बदलने की कोशिश कर सकें।
प्रोग्राम लिखने के लिए व्हाट्सएप के नमूने
ReplyDelete100 (एक्स) और 60 (वाई) कार्यक्रम के गोल आयत कॉर्नर त्रिज्या