Werkzeuge für Analyse und Leistungssteigerung

PHP Profiler im Vergleich – Teil 2: XHProf
Kommentare

Profiler wie Xdebug oder Facebooks XHProf sind mächtige Werkzeuge. Letztes Jahr haben namhafte Firmen wie Qafoo, Zend und SensioLabs ihre eigenen Profiler veröffentlicht, die das Analysieren von PHP-Anwendungen revolutionieren sollten. Engpässe oder ineffizienter Code gehören somit der Vergangenheit an. Im Rahmen einer „PHP Profiler“-Woche nehmen wir dieser fünfteiligen Artikelserie fünf Profiler unter die Lupe, um herauszufinden, welcher Profiler den jeweiligen Bedürfnissen am nächsten kommt. Heute: XHProf.

Mit Profilern wird die Leistungsfähigkeit von PHP-Anwendungen analysiert. So lassen sich z. B. SQL-Abfragen in einer Schleife oder ein nicht aktiver Cache schnell aufspüren. Nach einer Einführung und einem Fokus auf Xdebug in Teil 1, konzentrieren wir uns im zweiten Teil auf den PHP Profiler XHProf.

XHProf

Facebook entwickelte einen passiven hierarchischen Profiler namens XHProf, der im März 2009 als Open Source veröffentlicht wurde. Die Datensammlungskomponente wurde komplett in C geschrieben. Dadurch ist sichergestellt, dass sie auch performant ist. XHProf kommt mit einem einfachen in HTML geschrieben GUI daher, in dem alle relevanten Daten dargestellt werden. Dennoch wurde mit XHGui von Mark Story oder der Variante von Paul Reinheimer ein besseres grafisches Interface entwickelt, um die Ergebnisse anzuzeigen und zu verwalten. Die Installation des Profilers bedarf etwas mehr Aufwand als bei Xdebug. Während bis PHP 5.3 für die Installation PECL genutzt werden konnte, muss man ab PHP 5.4 die PHP-Extension selbst kompilieren. Das automatische Aktivieren des Profilings kann z. B. in der .htaccess-Datei oder in der Virtual-Host- bzw. Server-Block-Konfiguration mit auto_prepend_file erfolgen. Im Vergleich zu Xdebug kann man Requests miteinander vergleichen und so besser Optimierungen analysieren. Zusätzlich sind Informationen zum Speicherverbrauch verfügbar, und es gibt eine flache und eine hierarchische Ansicht.

Die Standardinformationen Callees, Callers, Anzahl der Funktionsaufrufe und verbrauchte CPU-Zeit sind mit an Bord. Zusätzlich ist der Speicherverbrauch zu einer Funktion angegeben. Ein Call Graph fehlt hier natürlich auch nicht. Wie bei Xdebug wird die Anzeige von PHP-Fehlern oder Datenbank-Queries nicht unterstützt, und einen Funktionsfilter gibt es nur bei XHGui. Das Aufzeichnen von Browser-Requests, CLI-Skripten oder APIs und individuelles Profiling sind möglich, eigene Extensions oder Monitor Events jedoch nicht. XHProf ist kostenlos und speichert die Daten lokal. Auf dem Produktivsystem kann man diesen Profiler daher gezielt einsetzen.

 

 

PHP Magazin

Entwickler MagazinDieser Artikel ist im PHP Magazin erschienen. Das PHP Magazin deckt ein breites Spektrum an Themen ab, die für die erfolgreiche Webentwicklung unerlässlich sind.

Natürlich können Sie das PHP Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

 

Aufmacherbild: tool renovation on grunge wood via Shutterstock / Urheberrecht: Isara Kaenla

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -