स्पीड चाहिए? पास बाय वैल्यू: प्रदर्शन संबंधी विचार
"स्पीड चाहिए? पास बाय वैल्यू" का सिद्धांत बताता है कि वैल्यू के आधार पर तर्क पारित करने से कभी-कभी कॉपी एलीजन के कारण प्रदर्शन में वृद्धि हो सकती है। स्पष्ट करने के लिए, कक्षा X और Y का उपयोग करते हुए निम्नलिखित कोड पर विचार करें:
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) {}
};
int main() {
X(foo());
Y(foo());
}
यहां, foo() एक अस्थायी स्ट्रिंग लौटाता है जो X और Y दोनों कंस्ट्रक्टरों को पास किया जाता है। जब हालाँकि, जब Y mem_name आरंभ करता है, तो उसे स्ट्रिंग संदर्भ की प्रतिलिपि बनानी होगी। और Y एक प्रतिलिपि निष्पादित करेगा. इसके अतिरिक्त, एक्स एक चाल चलेगा। प्रतिद्वंद्विता (अस्थायी) के लिए, एक्स केवल एक चाल चल सकता है, जबकि वाई को अभी भी एक प्रतिलिपि निष्पादित करनी होगी। एक सूचक (संदर्भ से गुजरने के बराबर)। इसलिए, X का प्रदर्शन अंतरालों के लिए Y के समान है और प्रतिमूल्यों के लिए बेहतर प्रदर्शन है। इसे विवेकपूर्ण तरीके से लागू किया जाना चाहिए। बड़े डेटा संरचनाओं की प्रतिलिपि बनाने से जुड़े विशिष्ट संदर्भ और संभावित ओवरहेड पर विचार करना आवश्यक है। वास्तविक प्रदर्शन प्रभाव को निर्धारित करने के लिए प्रोफाइलिंग की सिफारिश की जाती है। /watch?v=uk3-zmJWt-E) (समय-सीमा 8:10 और 8:56)
[juanchopanza का ब्लॉग: "स्पीड चाहते हैं? (हमेशा) वैल्यू से आगे न बढ़ें"]
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3