Wie hoch ist der Overhead von intelligenten Zeigern im Vergleich zu normalen Zeigern in C ++ 11? Mit anderen Worten, wird mein Code langsamer, wenn ich intelligente Zeiger verwende, und wenn ja, wie viel langsamer?
Insbesondere frage ich nach C ++ 11 std::shared_ptr
und std::unique_ptr
.
Offensichtlich wird das Material, das auf den Stapel geschoben wird, größer sein (zumindest denke ich das), da ein intelligenter Zeiger auch seinen internen Status (Referenzanzahl usw.) speichern muss. Die Frage ist wirklich, wie viel dies kosten wird meine Leistung beeinflussen, wenn überhaupt?
Zum Beispiel gebe ich einen intelligenten Zeiger von einer Funktion anstelle eines normalen Zeigers zurück:
std::shared_ptr<const Value> getValue();
// versus
const Value *getValue();
Oder wenn beispielsweise eine meiner Funktionen einen intelligenten Zeiger als Parameter anstelle eines normalen Zeigers akzeptiert:
void setValue(std::shared_ptr<const Value> val);
// versus
void setValue(const Value *val);
std::unique_ptr
oder std::shared_ptr
?