Vergleich der Profiler
Obwohl Xdebug wohl der meistgenutzte Profiler in der PHP-Gemeinde ist, gibt es noch eine Handvoll weitere gute Profiler. Im Folgenden wollen wir den Profiler der Firma Zend und den neuen XHProf ein wenig genauer unter die Lupe nehmen und mit Xdebug vergleichen. Fangen wir erst mal mit den Punkten an, die alle Profiler gemeinsam haben. Alle Tools, die wir vergleichen, werden als PHP-Erweiterung in das System integriert. Sie klinken sich also tief in den Interpretor ein, um notwendige Daten sammeln zu können. Die Konfiguration findet dabei über Kommandozeilenparameter oder Einstellungen in der php.ini statt. Alle drei Tools sammeln ähnliche oder identische Daten. Der größte Unterschied besteht also in der Mächtigkeit und Integration der Tools zur Auswertung der Profiler-Daten.
Zend Profiler
Der Zend Profiler wird klassisch in Kombination mit dem kostenpflichtigen Zend Studio verwendet. Die IDE baut auf das offene PDT-Projekt auf und beinhaltet somit den vollständigen Funktionsumfang, ergänzt ihn aber um wichtige Features wie eben Profiling. Die grafische Auswertung kann somit direkt über die IDE geschehen und ermöglicht einen sehr komfortablen Umgang.
XHProf
Interessanter Artikel?
Hat Ihnen der Artikel gefallen? Dies und mehr ist alles Teil des PHP Magazin 1.2010. Alle zwei Monate frisch am Kiosk! Zur jeweils aktuellen Ausgabe geht es hier.
XHProf ist ein relativ neues Tool, das von den Facebook-Entwicklern geschrieben und im März als Open Source veröffentlicht wurde. Genau wie alle anderen Tools deckt es die Mindestanforderung, wie Protokollierung des Speicherverbrauchs und der Funktionsdurchläufe, und bringt ein schönes zusätzliches Feature: den Diff, also den Unterschied zwischen zwei Durchläufen. Eine Analyse der vorgenommenen Optimierung kann somit auf eine sehr angehme Art und Weise unterstützt werden. XHProf bringt von Haus aus eine eigene, einfache Auswertung im HTML-Format, genannt XHProf UI mit. Das Tool zur Auswertung wurde dabei in PHP geschrieben.
Alle drei Profiler haben ihre Vor- und Nachteile. So kann der Zend Profiler als einziger mit einer Integration in die IDE aufwarten, ist aber auch die einzige kostenpflichtige Alternative. Xdebug punktet durch seine Unterstützung in der PHP-Gemeinde und die zusätzlichen Features, wie Debugging und Code Coverage, die es mit sich bringt. Zusätzlich sammelt er noch einen Bonus, da er ein Ausgabeformat produziert, das von diversen Tools zur Auswertung verarbeitet werden kann. XHProf als Neuling im Profiler-Geschäft schlägt sich wacker mit Features, die die Platzhirsche nicht ohne weiteres beherrschen.
Wer also den Komfort einer Integration in der IDE nicht missen will, dem sei der Zend Profiler in Kombination mit dem Zend Studio ans Herz gelegt. Allen anderen ist zu empfehlen, Xdebug ausgiebig zu nutzen und vielleicht ergänzend XHProf zu verwenden, um noch zusätzlich Informationen zu sammeln. Durch Vereinigung dieser beiden Tools sollte kein Speicherfresser oder Bottleneck dem Auge des Entwicklers entkommen.
Fazit
Die Idee hinter einem Profiling ist einfach. Wir nutzen existierende Tools wie Xdebug, um Laufzeitinformationen eines Skriptes oder eines URI zu sammeln. Diese Informationen werten wir aus, um langsame und nicht optimale Stellen in unserer Anwendung zu finden. Die Auswertung kann nach einfachen Mustern erfolgen. Das Suchen der Bottlenecks anhand der in der Summe kostspieligsten Methoden ist hier einer der effizientesten Wege. Bei der Auswertung dieser Zahlen sind uns die verschiedenen Grinder behilflich, indem sie die Daten grafisch aufbereiten und leserlich darstellen.
Nutzt man Profiling als qualitätssichernde Maßnahme, so sollte man einen kontinuierlichen Prozess einführen, der anhand eines Continuous-Integration-Servers den Überblick über das Laufzeitverhalten behält.
Bei der Auswahl der richtigen Tools spielt natürlich auch die Bereitschaft, Geld auszugeben, eine wichtige Rolle. Wenn man eine nahtlose Integration in die eigene Entwicklungsumgebung wünscht, so muss die Wahl auf den Zend Profiler fallen. Ist einem diese Integration nicht wichtig, dann sollte man seine Werkzeuge lieber aus der Open-Source-Gemeinde beziehen. Eine Kombination aus Xdebug und XHProf ist hierbei zu empfehlen.
Nils, der an der Universität Freiburg
Informatik studierte, treibt sich nun mehr seit fast 10 Jahren in der Webentwicklung herum und arbeitet derzeit für eines der größten
Verlagshäuser Europas im Qualitätsmanagement der Onlinesysteme. In seiner Freizeit betreibt er einen sehr erfolgreichen deutschsprachigen
PHP-Blog, in dem er seine Erfahrungen zum Thema PHP kundtut. Hier werden aktuelle Geschehnisse aus der PHP-Gemeinde genauso besprochen wie Best
Practices aus der Softwaretechnik. Ein Blatt wird dabei nie vor den Mund genommen.
Mike begann nach seiner Ausbildung zum
Fachinformatiker ein Informatikstudium an der Uni Bielefeld. Seit 11 Jahren entwickelt er Webanwendungen und arbeitet derzeit für Gruner+Jahr in
der Software-Architektur der Onlinesysteme.
Mike ist seit 2000 Mitglied des kompetenzverbund.werk01.



