"स्पीड चाहते हैं? वैल्यू से पास करें" - प्रदर्शन निहितार्थों की खोज
स्कॉट मेयर्स का कथन "स्पीड चाहिए? पास बाय वैल्यू" सवाल उठाता है मूल्य बनाम संदर्भ द्वारा वस्तुओं को पास करने के प्रदर्शन लाभों के बारे में। इस संदर्भ में, मूल्य से गुजरने में एक कॉपी ऑपरेशन शामिल होता है, जबकि संदर्भ से गुजरने से अनावश्यक प्रतियों से बचा जाता है।
स्ट्रक्चर एक्स और वाई के साथ निम्नलिखित उदाहरण पर विचार करें:
struct X {
std::string mem_name;
X(std::string name) : mem_name(std::move(name)) {}
};
struct Y {
std::string mem_name;
Y(const std::string &name) : mem_name(name) {}
};
X के कंस्ट्रक्टर में, mem_name को आरंभ करने के लिए std::string पर मूव कंस्ट्रक्टर को लागू करने से पहले तर्क नाम को एक अस्थायी ऑब्जेक्ट में कॉपी किया जाता है। Y के कंस्ट्रक्टर में, तर्क नाम एक स्थिरांक संदर्भ है, लेकिन mem_name को आरंभ करने के लिए एक प्रतिलिपि अभी भी बनाई गई है। इसलिए, X एक "कॉपी-फिर-मूव" ऑपरेशन निष्पादित करता है, जबकि Y एक एकल प्रतिलिपि निष्पादित करता है। अनुकूलन की संभावना, जैसे रिटर्न वैल्यू ऑप्टिमाइज़ेशन (आरवीओ)। हालाँकि, एक करीबी परीक्षा से पता चलता है कि परिणाम पारित किए जा रहे तर्क के प्रकार (लवल्यु या प्रतिद्वंद्विता) पर निर्भर करता है:
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3