Vergleich aktueller PHP Compiler
Superschnelle PHP-Anwendungen für eine sehr große Menge von Besuchern? - Klar geht das. Facebook ist so eine "busy App", geschrieben in PHP.
Facebook hat vor kurzem einen PHP Compiler namens HipHop vorgestellt, was ein allgemeines Interesse an PHP-Compilern zufolge hatte. PHP kompiliert? Ja, das gibt es schon lange.
Zunächst sollte man sich ins Gedächtnis rufen, was ein Compiler ist:
Ein Compiler ist ein Programm, das Source Code in eine andere Form von Code bringt (Repräsentation von Source Code). Die Ziel-Represäntation ist oft Maschinencode (direkt ausführbar auf dem Host-Prozessor), kann aber auch Sourcecode einer anderen Sprache oder sogar Sourcecode derselben Sprache sein.
Das Compilieren bedeutet also nicht zwangsläufig, daß Maschinencode hinten rauspurzelt, der direkt auf dem Prozessor ausgeführt werden kann.
PHP wird seit der Veröffentlichung von PHP4 im Jahre 2000 compiliert. Bis einschließlich PHP3 wurde der Sourcecode direkt vom PHP Interpreter ausgeführt.
Interpreter-Sprachen müssen nicht zwangsläufig "schlechter" im Sinne von langsamer sein. Interpreter-Sprachen wie Basic, Smalltalk und viele andere haben andere Vorzüge wie z.B. die direkte Fehleranzeige, die Compiler-Sprachen aufwändig re-implementieren müssen (durch Source-Parser etc.). Es kommt immer darauf an, was man erreichen möchte, das Ziel gibt die Programmiersprache vor.
Neben der von den PHP-Erfindern stammende ZEND Engine gibt es einige weitere PHP-Compiler:
- opcodes: Zend engine (zend), http://en.wikipedia.org/wiki/Zend_Engine
- native: Roadsend PHP (ppc), http://code.roadsend.com/pcc
- native: PHC PHP Open Source compiler (phc), http://www.phpcompiler.org/
- native: HipHop for PHP (hiphop), http://wiki.github.com/facebook/hiphop-php/
Zum Testen wurde ein Script namens bench.php verwendet.
Ergebnisse des Tests:
Compiler | Zeit | Rel. Geschw. |
---|---|---|
Zend Server | 5.722 | 0.00% |
Zend Server + Zend Optimizer | 5.649 | 1.28% |
PHP static | 5.518 | 3.57% |
PHP static + Zend Optimizer | 5.427 | 5.16% |
PHC | 6.438 | -12.51% |
PHP optimized | 3.673 | 35.81% |
HipHop | 4.262 | 25.52% |
PHC optimized bietet also die beste Performance. Bei der Wahl des Compilers sollte man sich natürlich erst mit den Eigenschaften dieser Auseinandersetzen. PHC und HipHop verfolgen unterschiedliche Ansätze, so daß nicht unbedingt die Geschwindigkeit als alleiniges Entscheidungskriterium herangezogen werden kann.
Der Test berücksichtigt keinen Objekt orientierten Code, bench.php ist ein prozedurales Script.
Das Konzept von PHC finde ich persönlich interessant: hiermit ist es möglich, eine Anwendung in unabhängige, optimierte Libs zu zerteilen, die einzeln gewartet werden können. So erhält man eine superschnelle "verteilte" Anwendung (wenn man weiß, was man tut).
Quell-Angabe: dieser Artikel wurde direkt von einem Artikel von Manuel Lemos auf PHPclasses.org inspiriert, wo sich noch viele weitere nützliche Informationen zu diesem Thema finden. Ich fand den Artikel so interessant, daß ich den Inhalt unbedingt weiter verteilen musste. Der Original Artikel ist englisch.
Juwelen, die man nebenbei entdeckt: auf der PHC-Download Seite findet man den Hinweise auf ROSE, ein Projekt, daß C, C++, Fortran und eben auch PHP ineinander überführt und Analysetools bereitstellt. Wer also bisher in C, C++ Webanwendungen geschrieben hat, kann sich mit ROSE die Ergebnisse in PHP anschauen und durch die Analysetools aufdecken, welche Programmteile optimiert werden müssen.