Um die Ausführung von PHP-Anwendungen zu beschleunigen, haben Mitarbeiter der Firma Zend mit JIT-Techniken und LLVM experimentiert.
Das brachte aber noch nicht die gewünschte Beschleunigung, so dass das Team sich auf größere Umbauten an den internen Datentypen verlegte – das erbrachte jetzt Leistungssteigerungen zwischen 10 und 30 Prozent, wie Dmitry Stogov schreibt.
Die Entwickler waren zwar davon ausgegangen, dass die Virtuelle Maschine (VM) optimiert sei, aber sie arbeitete wohl mit zu vielen Speicherzuweisungen und Referenzzählern. Daher sollen jetzt die Datentypen so geändert werden, dass solche “Heap-Zuweisungen minimiert werden“.
Bis heute werden alle Werte von der Zend Engine auf dem Heap-Speicher verwaltet. Damit benutzen sie die Referenzzählung und den Garbage Collector. Außerdem arbeitet die Zend Engine hauptsächlich mit Zeigern auf die interne Datenstruktur für alle Variablen, Zvals.
Die neue PHP-Implementierung nutzt keine Zeiger mehr und speichert die Zvals auf dem Stack, in Hashtable-Buckets und Property Slots. Das soll die Operationen auf dem langsameren Heap “dramatisch” verringern und vermeidet auch Referenzzählung und Garbage Collector für einfachere Datentypen.
Eine Kompilieranleitung für die neue PHP-Engine findet sich im Wiki.