© istockphoto.com/akindo
PHP Magazin
Werkzeuge für Analyse und Leistungssteigerung

Eine neue Ära der PHP-Profiler

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. Zeit also, sich die Profiler einmal genauer anzuschauen, um herauszufinden, welcher Profiler den jeweiligen Bedürfnissen am nächsten kommt.

Sandro Keil


Video: Profiling with 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. Vielen dürfte in diesem Zusammenhang der Profiler Xdebug bekannt sein. Während er in der Anfangszeit gute Dienste leistete, brachte Facebook 2009 XHProf mit einem GUI heraus. Seit letztem Jahr gibt es neben diesen beiden Urgesteinen noch weitere Profiler, etwa Z-Ray, Blackfire und Tideways.

Warum sollte ich meinen Code analysieren?

Diese Frage ist einfach zu beantworten: Time is Money! Weniger Performance bedeutet weniger Einnahmen. Das kontinuierliche Testen der Performance sollte darum zum Entwicklungsworkflow gehören – getreu dem Motto: Nicht raten, sondern messen! PHP-Anwendungen sind heutzutage sehr komplex, und eine kleine Änderung am Code kann sowohl positive als auch negative Auswirkungen mit sich bringen. So wurde etwa der PHP Dependency Manager Composer mit nur einer einzigen Codezeile um 30 bis 90 Prozent beschleunigt. Bitte deaktivieren Sie jetzt aber nicht den PHP Garbage Collector in Ihrem Projekt. Das genannte Beispiel war wirklich ein Sonderfall.

Mit einer Analyse auf Codebasis werden also Bottlenecks oder besonders intensiv genutzte Ressourcen aufgedeckt. Da 80 Prozent der Performance im Frontend liegen, bleiben im Backend lediglich 20 Prozent übrig, um die Seite auszuliefern. Wenn wir davon ausgehen, dass eine Sekunde Ladezeit schnell ist, muss das HTML in 200 Millisekunden ausgeliefert sein. Allerdings kann die Netzwerklatenz 100 Millisekunden betragen, und es bleiben nur 100 Millisekunden, um den Ausgabecode auf den Weg zum Client zu schicken.

Das Profiling sollte in einer Cache-freien Umgebung stattfinden. Ernsthaft – Query, OPcache und andere Caches sollten deaktiviert sein. Ein Cache hat nicht direkt die Aufgabe, einen einzelnen Request der Anwendung zu beschleunigen, sondern vielmehr den Zweck, dafür zu sorgen, dass mehrere gleichzeitige Requests die Anwendung nicht verlangsamen, oder besser gesagt: dass sie genauso schnell sind wie ein einzelner Request. Wenn also die Anwendung bei einem Request langsam ist, sollte man der Ursache auf den Grund gehen, anstatt sich hinter einem Cache zu verstecken, denn: Nicht auf den Server, sondern auf den Code kommt es an! Die positive Auswirkung eines Caches wird dann später analysiert. Auch wenn Hardware heutzutage nicht teuer ist, kann sich eine Optimierung etwa auch auf den Geldbeutel a...

PHP Magazin
Werkzeuge für Analyse und Leistungssteigerung

Eine neue Ära der PHP-Profiler

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. Zeit also, sich die Profiler einmal genauer anzuschauen, um herauszufinden, welcher Profiler den jeweiligen Bedürfnissen am nächsten kommt.

Sandro Keil


Video: Profiling with 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. Vielen dürfte in diesem Zusammenhang der Profiler Xdebug bekannt sein. Während er in der Anfangszeit gute Dienste leistete, brachte Facebook 2009 XHProf mit einem GUI heraus. Seit letztem Jahr gibt es neben diesen beiden Urgesteinen noch weitere Profiler, etwa Z-Ray, Blackfire und Tideways.

Warum sollte ich meinen Code analysieren?

Diese Frage ist einfach zu beantworten: Time is Money! Weniger Performance bedeutet weniger Einnahmen. Das kontinuierliche Testen der Performance sollte darum zum Entwicklungsworkflow gehören – getreu dem Motto: Nicht raten, sondern messen! PHP-Anwendungen sind heutzutage sehr komplex, und eine kleine Änderung am Code kann sowohl positive als auch negative Auswirkungen mit sich bringen. So wurde etwa der PHP Dependency Manager Composer mit nur einer einzigen Codezeile um 30 bis 90 Prozent beschleunigt. Bitte deaktivieren Sie jetzt aber nicht den PHP Garbage Collector in Ihrem Projekt. Das genannte Beispiel war wirklich ein Sonderfall.

Mit einer Analyse auf Codebasis werden also Bottlenecks oder besonders intensiv genutzte Ressourcen aufgedeckt. Da 80 Prozent der Performance im Frontend liegen, bleiben im Backend lediglich 20 Prozent übrig, um die Seite auszuliefern. Wenn wir davon ausgehen, dass eine Sekunde Ladezeit schnell ist, muss das HTML in 200 Millisekunden ausgeliefert sein. Allerdings kann die Netzwerklatenz 100 Millisekunden betragen, und es bleiben nur 100 Millisekunden, um den Ausgabecode auf den Weg zum Client zu schicken.

Das Profiling sollte in einer Cache-freien Umgebung stattfinden. Ernsthaft – Query, OPcache und andere Caches sollten deaktiviert sein. Ein Cache hat nicht direkt die Aufgabe, einen einzelnen Request der Anwendung zu beschleunigen, sondern vielmehr den Zweck, dafür zu sorgen, dass mehrere gleichzeitige Requests die Anwendung nicht verlangsamen, oder besser gesagt: dass sie genauso schnell sind wie ein einzelner Request. Wenn also die Anwendung bei einem Request langsam ist, sollte man der Ursache auf den Grund gehen, anstatt sich hinter einem Cache zu verstecken, denn: Nicht auf den Server, sondern auf den Code kommt es an! Die positive Auswirkung eines Caches wird dann später analysiert. Auch wenn Hardware heutzutage nicht teuer ist, kann sich eine Optimierung etwa auch auf den Geldbeutel a...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang