C++ Academy · Les

Profileren met perf, VTune en sanitizers

Profileer programma's met perf en Intel VTune en vind bugs met AddressSanitizer

Les 3 van 415 stappen

Profileren met perf, VTune en sanitizers is een gratis C++ Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C++ Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C++ Academy bevat in totaal 4 lessen.

Waarom profileren?

Je intuïtie over prestaties klopt meestal niet. Profileer om echte knelpunten te vinden — en optimaliseer daarna.

Linux: perf

perf is een profiler met lage overhead die steekproeven neemt en met Linux wordt meegeleverd. Voer het uit op elk binair bestand dat met foutopsporingsinformatie is gebouwd.

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

perf stat

Druk samenvattende metrieken af — cycli, instructies, cachemissers en verkeerd voorspelde vertakkingen — voor één uitvoering.

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

Vlamgrafieken

Zet perf-gegevens om in een vlamgrafiek die laat zien waar tijd wordt besteed.

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

macOS: Instruments

Apple's Instruments biedt tijdprofilering, analyse van toewijzingen, geheugenlekken en meer. Gratis bij Xcode.

Windows: VTune Profiler

Intel VTune (gratis voor persoonlijk gebruik) biedt gedetailleerde microarchitecturale analyse — pijplijnstalls, cachemissers en veel uitgevoerde blokken. Werkt op meerdere platforms.

Sanitizers vangen fouten op

Sanitizers zijn controleprogramma's tijdens uitvoering die in clang en gcc zijn ingebouwd. Compileer opnieuw met de juiste vlag:

  • -fsanitize=address — AddressSanitizer voor geheugenfouten
  • -fsanitize=thread — ThreadSanitizer voor gegevensraces
  • -fsanitize=undefined — UB Sanitizer voor overflow van gehele getallen met teken, enzovoort
  • -fsanitize=memory — MSan voor on geïnitialiseerde leesbewerkingen

Voorbeeld met AddressSanitizer

Vangt bufferoverlopen, gebruik-na-vrijgave en dubbele vrijgave op met aanroepstacks.

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

Compileertijd versus uitvoeringstijd

Statische analyse (clang-tidy, cppcheck) vindt fouten zonder het programma uit te voeren. Sanitizers vinden fouten tijdens uitvoering. Gebruik beide — ze vangen verschillende problemen op.

Toewijzingen profileren

Heaptoewijzingen zijn traag. Gebruik perf, massif van Valgrind of Heaptrack om intensief gebruikte toewijzingslocaties te vinden en het aantal toewijzingen te verminderen.

Profielen lezen

Richt je op de bovenste functies in het profiel. Bekijk daarna de aanroepboom om de context te begrijpen. Enkele procenten winst hier en daar zijn meestal geen optimalisatie waard.

Continue profilering

Voor productie verzamelen profilers op basis van steekproeven, zoals Pyroscope of Pixie, continu gegevens met weinig overhead. Zo ontdek je regressies voordat gebruikers er last van hebben.

Werkwijze

De optimalisatielus:

  1. Meet om het knelpunt te vinden
  2. Formuleer een hypothese
  3. Verander één ding
  4. Meet opnieuw

Zonder metingen ben je aan het gokken.

Korte controle

Welke compileroptie schakelt AddressSanitizer in?

Samenvatting

Profileer met perf (Linux), Instruments (macOS) of VTune (meerdere platforms) om knelpunten te vinden. Gebruik sanitizers om geheugen- en threadfouten vroeg op te sporen. Meet, formuleer een hypothese, verander iets en meet opnieuw.

Gratis beginnen

Leer C++ met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “Profileren met perf, VTune en sanitizers” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad C++ Academy, waaronder “Profileren met perf, VTune en sanitizers”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus C++ Academy bevat in totaal 4 lessen.

Wat leer ik in “Profileren met perf, VTune en sanitizers”?

Profileer programma's met perf en Intel VTune en vind bugs met AddressSanitizer Je oefent met C++ Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C++ Academy te beginnen?

Ervaring vooraf is niet nodig. C++ Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Profileren met perf, VTune en sanitizers”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C++ Academy?

Ja. Elke les over C++ Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Cachevriendelijke gegevensindelingen
  2. Branch prediction en hot loops
  3. Profileren met perf, VTune en sanitizers
  4. Microbenchmarking met Google Benchmark
← Terug naar C++ Academy