সি ++ 11 এ সাধারণ পয়েন্টারগুলির তুলনায় স্মার্ট পয়েন্টারগুলির ওভারহেড কত? অন্য কথায়, আমি যদি স্মার্ট পয়েন্টার ব্যবহার করি তবে কি আমার কোডটি ধীর হতে চলেছে এবং যদি তাই হয় তবে কত ধীর?
বিশেষত, আমি সি ++ 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);