Das Profiling in der Programmierung analysiert im Allgemeinen das Laufzeitverhalten von Software. Auch bei Webseiten können durch ineffektive Programmierung der eingesetzten Software, Erweiterungen und/oder Plugins Ladezeitprobleme auftreten und ein Profiler hilft dabei Problembereiche aufzudecken.
Durch die Analyse und den Vergleich der laufenden Skripte miteinander, meist durch das Messen der Geschwindigkeit und des genutzten Arbeitsspeichers auf dem Webserver, können so Bereiche isoliert werden, die einer genaueren Betrachtung seitens des Programmierers oder auch des Betreibers bedürfen. Moderne Profiler können dabei auch viele Nebenstränge abarbeiten und zeigen die Prozesse an, die nicht direkt zur Darstellung einer Webseite beitragen; beispielsweise wenn Plugins geladen werden, die erst nach dem Login erforderlich sind etc.
Dieses Profiling birgt aber auch Probleme. Durch das parallele Mitlaufen mit der Anwendung wird diese beeinflusst und im Allgemeinen verlangsamt sich deren Ausführungsgeschwindigkeit. Je nachdem, ob nur einzelne Bereiche oder der komplette Aufbau einer Seite analysiert werden, entstehen große Datenmengen und ein Profiler sollte nicht dauerhaft zum Einsatz kommen. Sinnvoll ist hierbei eher eine regelmäßige Analyse, die in festen Zeitabständen erfolgt.
Profiler im Einsatz
Im Bereich der Webserver und für PHP ist Xdebug wohl der Bekannteste und auch das am weitesten verbreitete Analysewerkzeug. Es existieren auch zahlreiche Forks für Xdebug. Ein Fork ist eine Abspaltung in einen eigenen Entwicklungszweig und damit in ein nachfolgendes oder ergänzendes Projekt.
Daneben existieren natürlich zahlreiche weitere Werkzeuge und Pakete, wovon wir an dieser Stelle eines kurz vorstellen möchten: XHProf
XHProf wurde von Facebook entwickelt und 2009 als Opensource an die Community übergeben. Leider gab es seitdem keine aktive Weiterentwicklung mehr, so dass die aktuelle Version 0.9.2 eigentlich noch als Betaversion markiert ist.
Auf diesen Profiler wirklich aufmerksam geworden sind wir übrigens auf dem letzten TYPO3Camp in Stuttgart (T3CS12), auf welchem Steffen Gebert einen interessanten Vortrag darüber gehalten und mit einer Live-Demo an einer TYPO3-Seite abgerundet hat.
Man kann Standard-PHP-Funktionen vom Profiling ebenso wie einzelne Funktionen im Skript ausschließen und die Ergebnisse via Diff-Ansicht miteinander vergleichen. Die Ausgabe enthält die aufgerufenen Funktionen sowie die Anzahl der Calls mit und ohne Unterfunktionen, die benötigte CPU-Zeit sowie den Speicherverbrauch der jeweiligen Methode.
XHProf kann, wie auch Xdebug, in allen unseren Tarifen mit PHP-Unterstützung selbst installiert werden. Ein SSH-Account ist grundsätzlich zu empfehlen, um die erhältlichen PEAR-Pakete recht einfach einzurichten.
Unsere Kunden finden eine Anleitung zur Installation von XHProf und zur Verwendung im Forum unter:
https://www.df.eu/forum/threads/66451-Anleitung-XHProf-installieren
Das Video von Steffen Geberts Präsentation beim TYPO3camp Stuttgart ist jetzt unter http://vimeo.com/42449034 online