Das Empire schlägt zurück

PHPNG – die Rückkehr der Zend Engine
Kommentare

Waren die letzten Wochen im Core-PHP-Umfeld vor allem von Diskussionen rund um Facebooks HipHop Virtual Machine geprägt, holt Zend jetzt mit PHPNG – PHP Next Generation – zum Gegenschlag aus. Die neue Generation der PHP-Engine punktet mit dem, was der Meinung Zends nach das Wichtigste ist: Performance. Die Rede ist von zum Teil wirklich großen Geschwindigkeitsschüben; bei nur geringfügigen Problemen.

Dmitry Stogov ist bei Zend der Mann für das Grobe, einer der Köpfe hinter der Zend Engine. Und die letzte Zeit muss hart gewesen sein für ihn und sein Team. Die Zeit, in der ein Social-Media-Riese mit einer Alternative für die PHP-Runtime die Bühne betrat und mit erstaunlichen Performancegewinnen aufwarten konnte. Natürlich war das Entwicklerteam von Facebook nicht das einzige, das einen JIT-Compiler für die Skriptsprache PHP vorweisen konnte, aber sie waren mit Sicherheit die mächtigste Fraktion.

The Need for Speed

Zend gerät unter Druck; das Core-Team von PHP musste sich viele Fragen gefallen lassen – erst recht, als Facebook mit Hack auch noch eine Sprachalternative veröffentlichte, die mit zahlreichen von Entwicklern heiß ersehnten Features punktete.

Es war also an der Zeit, nachzulegen. Und genau das hat Dmitry Stogov nun in Angriff genommen, wenn auch zunächst am falschen Ende:

I spent a significant amount of time experimenting with JIT, and even created a PoC of transparent LLVM based JIT compiler embedded into OPCache. The results on bench.php was just amazing – (0.219 seconds against 2.175 – 10 times speedup of PHP 5.5), but on real-life apps we got just few percent speedup. This made us look much deeper into some of the runtime characteristics and what was truly the bottleneck to making more substantial progress. It was clear the VM is already highly optimized, but works with data structures that require endless memory allocation, deallocation and reference counting.

Nach einer Umstellung des Ansatzes, nämlich nur den Code, der in der VM lief, durch den JIT-Compiler zu jagen, wurde deutlich, dass auch dieser Ansatz keine Fortschritte brachte. Also hat man einen Cut gemacht und einen komplett anderen Ansatz gefahren – man hat die schwere Entscheidung getroffen, die Data Types zu überarbeiten. Und das war mit einer grundlegenden Überarbeitung der Engine verbunden.

Herausgekommen ist eine Überarbeitete Version der Zend Engine, deren Grundstruktur weitestgehend erhalten blieb, dennoch aber vor allem in Zukunft noch weitere Performanceverbesserungen liefern dürfte. Im Posting in den Internals gibt sich Stogov zuversichtlich: „Right now the new engine already makes 10-30% speedup of php not only on benchmarks but on real-life applications as well!“

PHPNG in der echten Welt

Getestet hat das Team WordPress (20 Prozent Performancegewinn), Drupal (11,7 Prozent Steigerung), Qdig (15,3 Prozent Steigerung) und eine Zend-Framework-Test-Applikation mit 30, 5 Prozent Performancegewinn zur klassischen Engine.

Zwar handle es sich dabei noch um einen Work in Progress, aber man sei dennoch der Ansicht, dass man genug Fortschritte erzielt habe, um damit an die Öffentlichkeit zu gehen und die Community um Reviews und Feedback zu bitten.

Nun heißt es, auch andere Applikationen mit PHPNG zu benachmarken, um weitere Vergleichswerte zu erhalten. Eigens dafür wurde im PHP-Wiki eine Seite zu PHPNG eingerichtet, die beschreibt, wie man die Engine zum Laufen bekommt. Sie unterstützt dabei CLI, CGI und FPM sowie zahlreiche Extensions, wie beispielsweise OPcache, Tokenizer und zahlreiche weitere. PDO und pdo_sqlite werden bisher allerdings nur unvollständig unterstützt.

Reaktionen

Vor allem der Tweet von Pierre Joye hat eine lebhafte Diskussion auf Twitter ins Laufen gebracht, die man sich dringend zu Gemüte führen sollte.

Generell werden die Bemühungen zwar positiv aufgenommen, dennoch zeigen sich einige enttäuscht davon, dass wichtige Bereiche unangetastet blieben.

Nun heißt es, abzuwarten, was die Tests der Community mit anderen Applikationen ergeben. Sollte sich ein klares Bild abzeichnen, dürfte relativ bald damit zu rechnen sein, dass die Arbeiten an PHPNG weiter voranschreiten und so vielleicht auch die Sachen angegangen werden, die bisher noch in der Kritik stehen.

Sollte es so weit kommen, dann wäre das Rennen um die Gunst der Engine im PHP-Universum wieder vollkommen offen.

Aufmacherbild: Vehicle engine isolated on white background. 3d rendering illustration von Shutterstock / Urheberrecht: Aleks vF

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -