PHPNG: PHP um bis zu 30 Prozent beschleunigt
Mit einer neuen PHP-Engine sollen Anwendungen um bis zu 30 Prozent schneller arbeiten. Dafür sorgen Änderungen an der internen Datenrepräsentation sowie an der VM.

Um die Ausführung von PHP-Anwendungen zu beschleunigen, haben Mitarbeiter der Firma Zend 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.
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, die interne Datenstruktur für alle Variablen.
Die neue Implementierung 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 findet sich im Wiki. Mit der HHVM und der Sprache Hack versucht Facebook ebenfalls PHP zu beschleunigen.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Keine Lust gerade alles zu kommentieren, aber dieser Punkt ist einfach nur falsch...
0+9999999999999999; = 10000000000000000 0.3333333*3 = 0.9999998999999999
Geht es nicht im den "Garbage" Collector statt "Garage"? Grüße~ :3