Ile kosztuje narzut inteligentnych wskaźników w porównaniu do zwykłych wskaźników w C ++ 11? Innymi słowy, czy mój kod będzie wolniejszy, jeśli użyję inteligentnych wskaźników, a jeśli tak, to o ile wolniej?
W szczególności pytam o C ++ 11 std::shared_ptr
i std::unique_ptr
.
Oczywiście rzeczy zepchnięte w dół będą większe (przynajmniej tak mi się wydaje), ponieważ inteligentny wskaźnik musi również przechowywać swój stan wewnętrzny (liczbę referencji itp.), Pytanie naprawdę brzmi, ile to będzie wpłynąć na moje wyniki, jeśli w ogóle?
Na przykład zwracam inteligentny wskaźnik z funkcji zamiast normalnego wskaźnika:
std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
Lub, na przykład, gdy jedna z moich funkcji akceptuje inteligentny wskaźnik jako parametr zamiast zwykłego wskaźnika:
void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);