¿Cuánto es la sobrecarga de los punteros inteligentes en comparación con los punteros normales en C ++ 11? En otras palabras, ¿mi código será más lento si utilizo punteros inteligentes y, de ser así, cuánto más lento?
Específicamente, estoy preguntando sobre C ++ 11 std::shared_ptr
y std::unique_ptr
.
Obviamente, las cosas empujadas hacia abajo en la pila serán más grandes (al menos eso creo), porque un puntero inteligente también necesita almacenar su estado interno (recuento de referencias, etc.), la pregunta realmente es, ¿cuánto va a ser esto? afectar mi rendimiento, si es que lo hace?
Por ejemplo, devuelvo un puntero inteligente de una función en lugar de un puntero normal:
std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
O, por ejemplo, cuando una de mis funciones acepta un puntero inteligente como parámetro en lugar de un puntero normal:
void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);
std::unique_ptr
o std::shared_ptr
?