Berapa biaya overhead dari pointer pintar dibandingkan dengan pointer normal di C ++ 11? Dengan kata lain, apakah kode saya akan menjadi lebih lambat jika saya menggunakan petunjuk cerdas, dan jika demikian, seberapa lambat?
Secara khusus, saya bertanya tentang C ++ 11 std::shared_ptr
dan std::unique_ptr
.
Jelas, barang-barang yang didorong ke bawah tumpukan akan menjadi lebih besar (setidaknya saya kira begitu), karena penunjuk cerdas juga perlu menyimpan keadaan internalnya (jumlah referensi, dll), pertanyaan sebenarnya adalah, berapa ini akan terjadi? mempengaruhi kinerja saya, jika ada?
Misalnya, saya mengembalikan penunjuk cerdas dari fungsi alih-alih penunjuk normal:
std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
Atau, misalnya, ketika salah satu fungsi saya menerima penunjuk cerdas sebagai parameter alih-alih penunjuk normal:
void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);
std::unique_ptr
atau std::shared_ptr
?