प्रोग्रामिंग में एक बहुत ही सामान्य पैटर्न किसी प्रकार के अपडेट के बाद अधिकतम मूल्य को कैप करना है। मैं जानना चाहते हैं क्या है, अगर वहाँ कोड की निम्न दो टुकड़ों के बीच एक अंतर है, और एक प्राथमिकता दी जानी चाहिए, यदि:सी ++ में, क्या std :: min या if शाखा का उपयोग करके मूल्य को कैप करना बेहतर है?
value += increment;
value = std::min(value, valueMax);
बनाम
value += increment;
if (value > valueMax)
value = valueMax;
मेरे सोच है कि इस नीचे आता है क्या सीपीयू के पास दो मान लेने और न्यूनतम उत्पादन करने के निर्देश हैं। यदि ऐसा है, तो std :: min पर कॉल का परिणाम इस निर्देश में होना चाहिए और एक अनावश्यक शाखा से बचें। यदि नहीं, तो दूसरा संस्करण एक अनावश्यक असाइनमेंट से बचाता है जब मान < = valueMax।
मैं इस तरह की चीज़ के साथ बहुत अच्छा नहीं हूं, लेकिन मुझे यकीन है कि पुरानी स्कूल असेंबली हैकर जो इसे जान लेंगे। उनके लिए मैं पूछता हूं: कौन सा बेहतर है?
दोनों को आजमाएं और असेंबली को देखें ... – Mysticial
मैं कहूंगा कि पहला संस्करण हमेशा * कम से कम * साथ ही दूसरे संस्करण को भी करेगा, इसलिए इसका उपयोग करने का कोई कारण नहीं है। पहला संस्करण * भी * तेज हो सकता है, हालांकि इसके बारे में कोई गारंटी नहीं है। –
रहस्यवादी निहित की तरह, यह std :: min (http://en.cppreference.com/w/cpp/algorithm/min) के कार्यान्वयन पर निर्भर करता है। – DavidA