Qual è il sovraccarico dei puntatori intelligenti rispetto ai normali puntatori in C ++ 11? In altre parole, il mio codice sarà più lento se utilizzo i puntatori intelligenti e, in tal caso, quanto più lento?
In particolare, sto chiedendo informazioni su C ++ 11 std::shared_ptr
e std::unique_ptr
.
Ovviamente, le cose spinte verso il basso nello stack saranno più grandi (almeno penso di sì), perché un puntatore intelligente deve anche memorizzare il suo stato interno (conteggio dei riferimenti, ecc.), La domanda è davvero: quanto sta andando a influenzare le mie prestazioni, se non del tutto?
Ad esempio, restituisco un puntatore intelligente da una funzione invece di un normale puntatore:
std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
O, ad esempio, quando una delle mie funzioni accetta un puntatore intelligente come parametro invece di un normale puntatore:
void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);
std::unique_ptr
o std::shared_ptr
?