Скільки коштує накладних витрат на розумні вказівники порівняно із звичайними вказівниками в 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);
std::unique_ptr
або std::shared_ptr
?