Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Leistungsüberlegungen zu Smart Pointers | Fortgeschrittene Themen
C++ Smart Pointers
course content

Kursinhalt

C++ Smart Pointers

C++ Smart Pointers

1. Einführung in Smart Pointer
2. Einzigartige Zeiger
3. Gemeinsame Zeiger
4. Schwache Zeiger
5. Referenzen
6. Fortgeschrittene Themen

book
Leistungsüberlegungen zu Smart Pointers

Overhead von Smart-Pointern

Smart-Pointer führen im Vergleich zu rohen Zeigern zu einem gewissen Overhead, hauptsächlich aufgrund ihrer zusätzlichen Funktionalitäten wie Referenzzählung oder Löschverfolgung. Auch wenn dieser Overhead oft vernachlässigbar ist, ist es für performanceorientierte Entwickler wichtig, sich der potenziellen Performance-Auswirkungen bewusst zu sein.

Beispiel

Angenommen, Sie arbeiten an einer Legacy-Embedded-Anwendung, die Tausende von rohen Zeigern verwendet. Wenn Sie all diese rohen Zeiger durch Shared-Pointer ersetzen, könnten Sie einen merklichen Einfluss auf den Durchsatz der Anwendung beobachten.

Ein besserer Ansatz wäre es, Ihren Code langsam zu refaktorisieren, die Leistung nach jeder Iteration zu messen und eine Kombination aus Shared- und Unique-Pointern basierend auf dem Anwendungsfall und der Anwendbarkeit zu wählen.

Minimieren Sie den Overhead von Shared Pointern

Shared Pointer sind aufgrund ihres Referenzzählmechanismus teurer. Sie erhöhen den Referenzzähler, wann immer eine Kopie erstellt wird, und verringern ihn, wenn der Pointer außer Reichweite gerät oder zurückgesetzt wird. Dies kann die Leistung beeinträchtigen, insbesondere in hochfrequenten Szenarien oder bei der Verwendung einer großen Anzahl von Shared Pointern.

Die Lösung besteht darin, unnötige Kopien von Shared Pointern zu vermeiden und Shared Pointer nur dann zu verwenden, wenn Unique Pointer Ihren Anwendungsfall nicht abdecken können.

Benchmarken und Profilieren

Benchmarken und profilieren Sie regelmäßig Codeabschnitte, die Smart Pointer verwenden, um Engpässe zu identifizieren und die Leistung zu optimieren. Sie können hierfür Tools wie Google Benchmark oder Valgrind verwenden.

Welchen Smart Pointer sollten Sie verwenden, wenn nur eine Ressource verwaltet werden muss, die Ressource jedoch von mehreren Klassen in Ihrem Code zugegriffen wird?

Welchen Smart Pointer sollten Sie verwenden, wenn nur eine Ressource verwaltet werden muss, die Ressource jedoch von mehreren Klassen in Ihrem Code zugegriffen wird?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 6. Kapitel 3
We're sorry to hear that something went wrong. What happened?
some-alt