PHPNG: PHP um bis zu 30 Prozent beschleunigt
Um die Ausführung von PHP-Anwendungen zu beschleunigen, haben Mitarbeiter der Firma Zend(öffnet im neuen Fenster) mit JIT-Techniken und LLVM experimentiert. Das bewirkte aber nicht viel, so dass das Team große Umbauarbeiten an den internen Datentypen vornahm – und nun auf Leistungssteigerungen zwischen 10 und 30 Prozent verweisen kann, wie Dmitry Stogov schreibt(öffnet im neuen Fenster) .
Die Entwickler hielten die virtuelle Maschine zwar für optimiert, sie arbeitete aber mit zu vielen Speicherzuweisungen und Referenzzählern. Deshalb sollten die Datentypen so geändert werden, dass " Heap-Zuweisungen minimiert werden ", woran etwa vier Monate gearbeitet wurde.
Mehr Stack, weniger Zeiger
Bisher werden sämtliche Werte von der Zend-Engine auf dem Heap-Speicher verwaltet. Sie beanspruchen damit die Referenzzählung und den Garbage Collector. Außerdem arbeitet die Engine hauptsächlich mit Zeigern auf die sogenannten Zvals(öffnet im neuen Fenster) , die interne Datenstruktur für alle Variablen.
Die neue Implementierung(öffnet im neuen Fenster) verzichtet auf Zeiger und speichert die Zvals auf dem Stack, in Hashtable-Buckets sowie Property Slots. Das verringere die Operationen auf dem Heap "dramatisch" und vermeidet Referenzzählung und Garbage Collector für einfache Datentypen.
Zudem verwendet die neue Implementierung mehr Stack-Speicher als bisher und verzichtet in bestimmten Fällen auf Copy-on-Write. Die Daten werden stattdessen direkt kopiert. Die teilweise veränderten internen Datentypen, die die neue Engine benutzt, sind im Wiki der PHP-Entwickler dokumentiert.
Noch sind die Arbeiten an der neuen Engine nicht abgeschlossen und auch einige Erweiterungen lassen sich noch nicht nutzen. Trotzdem rufen die Entwickler die Community dazu auf, die Neuimplementierung mit vielen Anwendungen zu testen und sich an der Entwicklung zu beteiligen.
Die neue Datenverwaltung könnte künftig auch als Grundlage für weitere Arbeiten zur Beschleunigung dienen, etwa für die anfangs erwähnten JIT-Techniken. Eine Kompilieranleitung(öffnet im neuen Fenster) findet sich im Wiki. Mit der HHVM und der Sprache Hack versucht Facebook ebenfalls PHP zu beschleunigen.
- Anzeige Hier geht es zum Handbuch für Softwareentwickler bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.