Patch soll Geschwindigkeit von PHP verdoppeln
Zend Engine 1 bietet offenbar hohes Potenzial für Effizienzsteigerungen
Thies Arntzen und Sterling Hughes haben sich am Rande des LinuxTags zusammengesetzt und einige Änderungen für die Zend Engine 1, den Kern von PHP 4.x, entwickelt, die die Geschwindigkeit von PHP deutlich erhöhen. Die in einem Patch zusammengefassten Änderungen können die Geschwindigkeit von PHP mitunter mehr als verdoppeln.
Dabei griffen Arntzen und Hughes unter anderem auf eine Idee aus Parrot auf, einer Virtual Machine zur effizienten Ausführung von Bytecode, die unter anderem in Perl 6 zum Einsatz kommen soll. Sie nutzen ein errechnetes Goto-Statement und betten die Adresse des folgenden Opcode in die Instruktion ein, was Schritte, um zum nächsten Opcode zu gelangen, verkürzt. Dies funktioniert nur mit dem GCC und setzt eine Architektur voraus, die entsprechende Gotos unterstützt.
Als besonders ineffizient identifizierten Arntzen und Hughes die Register-Lookups der Zend Engine 1, die immer wieder ausgeführt wurden, auch wenn eine Variable schon gefunden wurde. Sie überprüfen immer wieder die Adresse einer Variablen, nicht deren Inhalt, so dass sich die Ergebnisse problemlos cachen lassen. Mit einem speziellen Instruktionen-Speicher konnten die beiden die Geschwindigkeit der Register-Abrufe fast verfünffachen. Die allein bringe für PHP insgesamt eine Geschwindigkeitssteigerung von 40 Prozent.
Darüber hinaus wurden die Funktionsaufrufe optimiert, um variablenlose Funktionsaufrufe zu cachen, der Code für Vergleichsoperatoren sowie einige Funktionen zum Speichermanagement überarbeitet und einige Änderungen aus der Zend-Engine 2 in die Zend Engine 1 integriert. Zudem wurden einige Instruktionen so modifiziert, dass sie von bestimmten Compiler-Switches des GCC besser profitieren können.
Insgesamt deuten die Modifikationen an der Zend Engine 1 auf eine Beschleunigung von PHP insgesamt um etwa den Faktor 2 hin, was aus den Ergebnissen der von Arntzen und Hughes durchgeführten Benchmarks hervorgeht. Allerdings stehen die entsprechenden Änderungen derzeit nur in Form eines Patches bereit, der auf eine aktuelle Version von PHP 4.3.3 angewendet werden kann. Wann und ob die oben beschriebenen Änderungen in die Standard-Distribution von PHP einfließen ist noch unklar. Es scheint aber durchaus möglich, dass zumindest Teile ihren Weg in kommende PHP-4.3.x- oder 4.x-Versionen finden könnten.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Die Strings wurden schon vor einigen Versionen sehr beschleunigt und als lahm würde ich...
Ja. Schön für die anderen. Mario
Drei Dinge die mir dazu auf Anhieb einfallen: - Java 'String' ist lahm und...
Du willst sagen: es war keine php_mysql.dll dabei und du besitzt kein VisualStudio? Für...