Profileren met perf, VTune en sanitizers
Profileer programma's met perf en Intel VTune en vind bugs met AddressSanitizer
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 reportperf stat
Druk samenvattende metrieken af — cycli, instructies, cachemissers en verkeerd voorspelde vertakkingen — voor één uitvoering.
perf stat -e cycles,instructions,cache-misses,branch-misses ./mainVlamgrafieken
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.svgmacOS: 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 bugCompileertijd 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:
- Meet om het knelpunt te vinden
- Formuleer een hypothese
- Verander één ding
- 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.
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
- Cachevriendelijke gegevensindelingen
- Branch prediction en hot loops
- Profileren met perf, VTune en sanitizers
- Microbenchmarking met Google Benchmark