"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मूल्य या संदर्भ से गुजरना: ''स्पीड चाहिए? मूल्य से गुजरना'' वास्तव में कब सच है?

मूल्य या संदर्भ से गुजरना: ''स्पीड चाहिए? मूल्य से गुजरना'' वास्तव में कब सच है?

2024-11-08 को प्रकाशित
ब्राउज़ करें:998

  Passing by Value or Reference: When is \

"स्पीड चाहते हैं? वैल्यू से पास करें" - प्रदर्शन निहितार्थों की खोज

स्कॉट मेयर्स का कथन "स्पीड चाहिए? पास बाय वैल्यू" सवाल उठाता है मूल्य बनाम संदर्भ द्वारा वस्तुओं को पास करने के प्रदर्शन लाभों के बारे में। इस संदर्भ में, मूल्य से गुजरने में एक कॉपी ऑपरेशन शामिल होता है, जबकि संदर्भ से गुजरने से अनावश्यक प्रतियों से बचा जाता है।

स्ट्रक्चर एक्स और वाई के साथ निम्नलिखित उदाहरण पर विचार करें:

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 एक एकल प्रतिलिपि निष्पादित करता है। अनुकूलन की संभावना, जैसे रिटर्न वैल्यू ऑप्टिमाइज़ेशन (आरवीओ)। हालाँकि, एक करीबी परीक्षा से पता चलता है कि परिणाम पारित किए जा रहे तर्क के प्रकार (लवल्यु या प्रतिद्वंद्विता) पर निर्भर करता है:

    लवल्यू
  • : एक्स और वाई दोनों एक प्रतिलिपि निष्पादित करेंगे (में) नाम आरंभ करते समय X, mem_name आरंभ करते समय Y में), इसके बाद X में एक चाल ऑपरेशन होता है।
  • Rvalues
  • : एक प्रतिलिपि।
  • आम तौर पर, एक चाल एक पॉइंटर को पार करने से तेज़ होती है, जो अनिवार्य रूप से संदर्भ से गुज़रने से होती है। इसलिए, प्रतिमूल्यों के लिए, विशिष्ट मामलों में इष्टतम दृष्टिकोण निर्धारित करने के लिए प्रोफाइलिंग की सिफारिश की जाती है।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3