Speicher- und Zeitaufwand von Smart Pointern in C
Smart Pointer, wie std::shared_ptr und std::unique_ptr in C 11, Bieten Sie eine automatische Speicherverwaltung und vereinfachen Sie die Eigentumssemantik. Einige Entwickler wundern sich jedoch möglicherweise über die möglichen Auswirkungen der Verwendung intelligenter Zeiger im Vergleich zu herkömmlichen Zeigern.
Speicheraufwand:
std::unique_ptr verursacht nur dann Speicheraufwand, wenn Es wird ein nicht trivialer Löscher bereitgestellt. Allerdings erfordert std::shared_ptr immer zusätzlichen Speicher für den Referenzzähler, wenn auch relativ wenig.
Zeitaufwand:
std::unique_ptr verursacht Zeitaufwand während Konstruktion, wenn der bereitgestellte Löscher kopiert oder der Zeiger als Null initialisiert werden muss, und während der Zerstörung, um den Besitz zu zerstören object.
std::shared_ptr erfährt einen Zeitaufwand, hauptsächlich während der Erstellung zum Erstellen des Referenzzählers, während der Zerstörung, um den Referenzzähler zu dekrementieren und möglicherweise das Objekt zu zerstören, und während der Zuweisung, um den Referenzzähler zu erhöhen. Darüber hinaus sind diese Inkremente/Dekremente für die Thread-Sicherheit atomar und tragen zusätzlich zum Overhead bei.
Auswirkungen auf die Leistung:
Es ist wichtig zu beachten, dass nichts davon intelligent ist Zeiger haben während der Dereferenzierung Zeitaufwand, was typischerweise der häufigste Vorgang für Zeiger ist.
Im Allgemeinen der mit Smart verbundene Aufwand Die Anzahl der Zeiger ist minimal und sollte die Codeleistung nicht wesentlich beeinträchtigen. Die kontinuierliche Erstellung und Zerstörung intelligenter Zeiger kann jedoch zu Leistungsengpässen führen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3