Patch soll Geschwindigkeit von PHP verdoppeln
Dabei griffen Arntzen und Hughes unter anderem auf eine Idee aus Parrot(öffnet im neuen Fenster) 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(öffnet im neuen Fenster) der von Arntzen und Hughes durchgeführten Benchmarks(öffnet im neuen Fenster) 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.
- 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.



