Сколько накладных расходов на интеллектуальные указатели по сравнению с обычными указателями на С++ 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);