Qual é a sobrecarga de ponteiros inteligentes em comparação com ponteiros normais em C ++ 11? Em outras palavras, meu código ficará mais lento se eu usar ponteiros inteligentes e, em caso afirmativo, quanto mais lento?
Especificamente, estou perguntando sobre o C ++ 11 std::shared_ptr
e std::unique_ptr
.
Obviamente, as coisas empurradas para baixo na pilha serão maiores (pelo menos eu acho), porque um ponteiro inteligente também precisa armazenar seu estado interno (contagem de referência, etc), a questão realmente é, quanto isso vai afetam meu desempenho, se afetam?
Por exemplo, eu retorno um ponteiro inteligente de uma função em vez de um ponteiro normal:
std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
Ou, por exemplo, quando uma das minhas funções aceita um ponteiro inteligente como parâmetro em vez de um ponteiro normal:
void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);
std::unique_ptr
ou std::shared_ptr
?