0Pricing
C++ Academy · Lektion

Profiling mit perf, VTune und Sanitizern

Erstellen Sie mit perf und Intel VTune Profile und finden Sie Fehler mit AddressSanitizer.

Profiling mit perf, VTune und Sanitizern ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum ein Profil erstellen?

Die eigene Intuition zur Performance liegt meistens falsch. Erstellen Sie ein Profil, um die tatsächlichen Engpässe zu finden – und optimieren Sie dann.

Linux: perf

perf ist ein Sampling-Profiler mit geringem Overhead, der mit Linux ausgeliefert wird. Führen Sie ihn für jedes Binary aus, das mit Debug-Informationen erstellt wurde.

g++ -O2 -g main.cpp -o main
perf record ./main
perf report

perf stat

Gibt zusammenfassende Metriken für einen Lauf aus – Zyklen, Instruktionen, Cache-Verfehlungen und Fehlvorhersagen von Verzweigungen.

perf stat -e cycles,instructions,cache-misses,branch-misses ./main

Flame Graphs

Wandeln Sie perf-Daten in einen Flame Graph um, der zeigt, wo Zeit aufgewendet wird.

perf record -F 99 -g ./main
perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svg

macOS: Instruments

Apple s Instruments bietet Zeitprofiling, die Analyse von Allokierungen und Leaks sowie weitere Funktionen. Es ist kostenlos mit Xcode verfügbar.

Windows: VTune Profiler

Intel VTune (für den persönlichen Gebrauch kostenlos) bietet eine detaillierte mikroarchitektonische Analyse – Pipeline-Stopps, Cache-Verfehlungen und Hotblocks. Plattformübergreifend.

Sanitizer finden Fehler

Sanitizer sind Laufzeitprüfer, die in clang und gcc integriert sind. Kompilieren Sie das Programm mit dem passenden Flag neu:

  • -fsanitize=address – AddressSanitizer für Speicherfehler
  • -fsanitize=thread – ThreadSanitizer für Data Races
  • -fsanitize=undefined – UB Sanitizer für vorzeichenbehafteten Overflow usw.
  • -fsanitize=memory – MSan für das Lesen nicht initialisierter Daten

Beispiel für AddressSanitizer

Findet Pufferüberläufe, Use-after-Free und Double-Free-Fehler und gibt dabei Stacktraces aus.

g++ -fsanitize=address -g main.cpp
./a.out
# Output points exactly at the bug

Compilezeit vs. Laufzeit

Statische Analysen (clang-tidy, cppcheck) finden Fehler, ohne das Programm auszuführen. Sanitizer finden Laufzeitfehler. Verwenden Sie beides – sie erkennen unterschiedliche Probleme.

Allokierungen profilieren

Heap-Allokierungen sind langsam. Verwenden Sie perf, Valgrind s massif oder Heaptrack, um häufige Allokierungsstellen zu finden und ihre Anzahl zu reduzieren.

Profile lesen

Konzentrieren Sie sich auf die wichtigsten Funktionen im Profil. Sehen Sie sich anschließend den Aufrufbaum an, um den Kontext zu verstehen. Einige Prozent an einzelnen Stellen sind die Optimierung normalerweise nicht wert.

Kontinuierliches Profiling

Für Produktionssysteme sammeln Sampling-Profiler wie Pyroscope oder Pixie kontinuierlich Daten mit geringem Overhead. So erkennen Sie Regressionen, bevor sie sich auf Benutzer auswirken.

Workflow

Die Optimierungsschleife:

  1. Messen Sie, um den Engpass zu identifizieren
  2. Stellen Sie eine Hypothese auf
  3. Ändern Sie genau eine Sache
  4. Messen Sie erneut

Ohne Messung raten Sie nur.

Schnelltest

Welches Compiler-Flag aktiviert AddressSanitizer?

Zusammenfassung

Erstellen Sie mit perf (Linux), Instruments (macOS) oder VTune (plattformübergreifend) Profile, um Engpässe zu finden. Verwenden Sie Sanitizer, um Speicher- und Threading-Fehler frühzeitig zu erkennen. Messen Sie, stellen Sie eine Hypothese auf, ändern Sie etwas und messen Sie erneut.

Häufig gestellte Fragen

Ist die Lektion „Profiling mit perf, VTune und Sanitizern“ kostenlos?

Ja — der vollständige Text von „Profiling mit perf, VTune und Sanitizern“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Profiling mit perf, VTune und Sanitizern“?

Erstellen Sie mit perf und Intel VTune Profile und finden Sie Fehler mit AddressSanitizer. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Profiling mit perf, VTune und Sanitizern“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Cachefreundliche Datenlayouts
  2. Branch Prediction und Hot Loops
  3. Profiling mit perf, VTune und Sanitizern
  4. Microbenchmarking mit Google Benchmark
← Zurück zu C++ Academy