C ++ 11 में सामान्य पॉइंटर्स की तुलना में स्मार्ट पॉइंटर्स का ओवरहेड कितना है? दूसरे शब्दों में, अगर मैं स्मार्ट पॉइंटर्स का उपयोग करता हूं तो क्या मेरा कोड धीमा होने वाला है, और यदि हां, तो कितना धीमा है?
विशेष रूप से, मैं C ++ 11 std::shared_ptr
और के बारे में पूछ रहा हूं std::unique_ptr
।
जाहिर है, स्टैक नीचे धकेल दिया गया सामान बड़ा होने वाला है (कम से कम मुझे ऐसा लगता है), क्योंकि एक स्मार्ट पॉइंटर को अपनी आंतरिक स्थिति (संदर्भ गणना, आदि) को संग्रहीत करने की भी आवश्यकता होती है, सवाल वास्तव में यह है कि यह कितना हो रहा है मेरे प्रदर्शन को प्रभावित करते हैं, अगर बिल्कुल भी?
उदाहरण के लिए, मैं एक सामान्य पॉइंटर के बजाय एक फ़ंक्शन से एक स्मार्ट पॉइंटर लौटाता हूं:
std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
या, उदाहरण के लिए, जब मेरा एक कार्य सामान्य सूचक के बजाय एक स्मार्ट पॉइंटर को पैरामीटर के रूप में स्वीकार करता है:
void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);