C ++ 11'deki normal işaretçilerle karşılaştırıldığında akıllı işaretçilerin ek yükü ne kadar? Başka bir deyişle, akıllı işaretçiler kullanırsam kodum daha yavaş mı olacak ve eğer öyleyse ne kadar yavaş olacak?
Özellikle, C ++ 11 std::shared_ptr
ve std::unique_ptr
.
Açıkçası, yığından aşağı itilen şeyler daha büyük olacak (en azından öyle düşünüyorum), çünkü akıllı bir işaretçinin aynı zamanda iç durumunu da saklaması gerekiyor (referans sayısı, vb.), Asıl soru şu: performansımı etkiler mi?
Örneğin, normal bir işaretçi yerine bir işlevden akıllı bir işaretçi döndürüyorum:
std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
Veya, örneğin, işlevlerimden biri normal bir işaretçi yerine parametre olarak bir akıllı işaretçiyi kabul ettiğinde:
void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);