Dem Performance-Killer auf der Spur
 
Die Jäger Devel::DProf
Devel::SmallProf
Devel::NYTProf
Spezielle Profiler
Profiling für den Perl-Programmierer
Arten des Profilens...
CPU Time Real Time Subroutine ? ? Statement ? ?
CPU Time Nur die Zeit, die die CPU beschäftigt ist
Exklusive I/O, Datenbanken, etc.
Kaum beeinflusst von der Auslastung des Rechners
Real Time Komplette Dauer der Ausführung
Inklusive I/O, Datenbanken, etc.
Stark beeinflusst durch Auslastung
Subroutine Misst die Zeit zwischen Betreten und Verlassen der Subroutine
Inklusive aller Subroutinen und Code, die innerhalb der Subroutine aufgerufen werden
Ziemlich schnell, da nur an wenigen Punkten die Zeit genommen werden muss -> wenig I/O
Subroutine Kann durch „goto &sub“ und andere Sprünge durcheinander gebracht werden.
Liefert keine Anhaltspunkte, wo genau in der Subroutine die Zeit verloren geht
Kann keinen Code außerhalb von Subroutinen  messen
Statement Misst den Zeitverbrauch pro Statement/Zeile (vom Start der Ausführung des einen Statements bis zum Start des nächsten Statements)
Exklusive Zeit für aufgerufene Subroutinen (Ausnahme: Built-ins und xsub)
Sehr hohe Genauigkeit
Statement Sehr viel I/O
Manchmal etwas ungenau
Zu detailliert für große Subroutinen
Schwierig, eine Zeit für die Subroutine zu bekommen
Häufiges Problem: bei Aufruf einer Subroutine und dann „etwas anderes“ ausführen, wird alles der Subroutine zugerechnet Funktion() + mkdir('./verzeichnis');
Anwendungsbereiche profilen Evtl. liegen die Probleme außerhalb des Perl-Bereichs Datenbanken
File I/O
Manche Jäger bleiben auf der Strecke Devel::DProf steht kurz vor der Pensionierung Ab Perl 5.16 wird es voraussichtlich nicht mehr im Core sein
Maintenance-Nightmare
Liefert häufig falsche Ergebnisse (je schneller die CPUs werden, desto schlechter werden die Ergebnisse) Devel::SmallProf ist veraltet
Devel::NYTProf to the rescue
…  leider erst ab Perl 5.8.1
Devel::NYTProf Fork von Devel::FastProf
Gestartet von Adam Kaplan von „New York Times“
Ein paar Bugfixes für Devel::FastProf plus HTML-Auswertung an Devel::Cover angelehnt
Höhere Genauigkeit (beachtet Overhead des Profilers beim Schreiben der Daten)
Tests wesentlich verbessert
Devel::NYTProf Ist ein Statement  und  und Subroutinen Profiler
Wertet Subroutinen „pro Aufruf“ aus
Auch für xsubs
Berechnet Exklusiv-Zeiten „on-the-fly“
Kann mit Dingen wie „goto &sub“ umgehen
Schreibt Datei erst am Ende
Sehr schnell
Devel::NYTProf Der Statement-Profiler wurde verbessert Das Statement am Ende einer Schleife bekommt nicht die Zeit für die Auswertung der Bedinung hinzugerechnet

Fr os con2010_devel_nytprof