Profiler
Een profiler is een programma voor het analyseren van de uitvoersnelheid en het geheugengebruik van andere programma's. Het is in de informatica een belangrijk gereedschap bij het ontwikkelen van programma's waarvan de snelheid essentieel is.
Een profiler bepaalt per deel van het te profileren programma hoeveel procent er in dat deel van doorgebracht wordt. Zo kan de ontwikkelaar bepalen welk deel geoptimaliseerd moet worden om de meeste snelheidswinst te behalen.
Profile Guided Optimization
[bewerken | brontekst bewerken]Compilers van tegenwoordig zijn al erg goed in het automatisch optimaliseren van programma's. Een groot probleem is echter dat de compiler veel te weinig weet over het programma dat het aan het compileren is.
Een voorbeeld:
for (int i = 0;i < 100;i++) { if (i == 90) Foo(); else Bar(); }
In dit voorbeeld is het duidelijk dat het else-blok veel vaker uitgevoerd wordt dan het if-blok. Voor de compiler is dat echter vaak niet te achterhalen. Als de compiler in zo'n geval zou weten welke optie vaker voorkomt, zou het stukken beter kunnen optimaliseren.
Door middel van profile guided optimization is dit mogelijk. Je voert dan eerst een normale versie van je programma uit met een profiler. Uit het resultaat van de profiler haalt de compiler dan de informatie die het nodig heeft voor het optimaliseren van het gecompileerde programma.