Facebook erfindet eine virtuelle PHP-Maschine

Der Social-Networking-Riese Facebook hat einen weiteren Schritt unternommen, um die Programmiersprache PHP Web schneller laufen zu lassen. Das Unternehmen hat eine virtuelle PHP-Maschine entwickelt, die die Sprache bis zu neunmal so schnell ausführen kann wie PHP nativ auf großen Systemen.

"Unser Ziel ist es, PHP wirklich sehr, sehr schnell zum Laufen zu bringen", sagte Joel Pobar, ein technischer Manager von Facebook. Facebook verwendet seit Anfang dieses Jahres die virtuelle Maschine HHVM (HipHop Virtual Machine) auf allen Servern.

[Erfahren Sie, wie Sie intelligenter und nicht härter arbeiten können, indem Sie alle Tipps und Trends zusammenfassen, die Programmierer im Developers 'Survival Guide kennen müssen. Laden Sie das PDF noch heute herunter! | Bleiben Sie mit dem Developer World-Newsletter über die neuesten Entwicklernachrichten auf dem Laufenden. ]]

Pobar diskutierte die virtuelle Maschine auf der OSCON (O'Reilly Open Source Conference), die diese Woche in Portland, Oregon, stattfindet.

HHVM ist nicht der erste Versuch von Facebook, PHP für eine schnellere Nutzung anzupassen. PHP ist eine interpretierte Sprache, dh der Quellcode wird direkt vom Prozessor ausgeführt. Im Allgemeinen werden Programme, die in interpretierten Sprachen wie PHP geschrieben wurden, nicht so schnell ausgeführt wie Sprachen wie C oder C ++, die zuvor in Maschinensprachen-Bytecode kompiliert wurden. Facebook ist PHP treu geblieben, da es von vielen Webprogrammierern, die für das Unternehmen arbeiten, allgemein verstanden wird.

Um mit der unstillbaren Nachfrage der Benutzer Schritt zu halten, hat Facebook ursprünglich einen Compiler namens HipHop entwickelt, der PHP-Code in C ++ übersetzt, damit er für eine schnellere Leistung vorab kompiliert werden kann.

Während Facebook über mehrere Jahre hinweg erhebliche Leistungssteigerungen bei dieser ersten Version von HipHop verzeichnete, suchte es nach anderen Möglichkeiten, um die Bereitstellung der dynamisch erstellten Webseiten für seine rund eine Milliarde Benutzer zu beschleunigen. "Unsere Leistungsstrategie dafür würde sich durchsetzen", gab Pobar zu.

HHVM ist der nächste Schritt für Facebook. HHVM befindet sich seit ungefähr drei Jahren in der Entwicklung und arbeitet nach dem gleichen Prinzip wie die JVM (Java Virtual Machine). HHVM verfügt über einen JIT-Compiler (Just-in-Time), der den vom Menschen lesbaren Quellcode bei Bedarf in maschinenlesbaren Bytecode konvertiert. (Der vorherige HipHop, der in HPHPc umbenannt wurde, wurde jetzt bei Facebook eingestellt.)

Dieser JIT-Ansatz ermöglicht es der virtuellen Maschine, "zur Laufzeit intelligentere Entscheidungen zu treffen", sagte Pobar. Wenn beispielsweise die MySQL-Datenbank zum Lesen einer Datenzeile aufgerufen wird, kann die HHVM im Handumdrehen herausfinden, um welchen Datentyp es sich handelt, z. B. eine Ganzzahl oder eine Zeichenfolge. Es kann dann im laufenden Betrieb Code generieren oder aufrufen, der für die Verarbeitung dieses bestimmten Datentyps am besten geeignet ist.

Mit dem alten HipHop "ist das Beste, was es tun kann, die gesamte Facebook-Codebasis zu analysieren, die Gründe dafür zu ermitteln und dann den Code anhand seiner Überlegungen zu spezialisieren. Es kann jedoch nicht alle Überlegungen richtig machen. Es gibt Teile der Codebasis, die dies tun." man kann nicht einfach darauf schließen oder darüber nachdenken ", sagte Pobar.

Pobar schätzte, dass HHVM ungefähr doppelt so schnell ist wie HPHPc und ungefähr neunmal so schnell wie direktes PHP.

Facebook hat den Code für HHVM auf GitHub veröffentlicht, mit der Hoffnung, dass andere ihn auch verwenden, um ihre PHP-Websites zu beschleunigen.

HHVM ist für die Verarbeitung sehr großer und häufig verwendeter PHP-Codebasen optimiert. Pobar rechnete damit, dass die Verwendung von HHVM für Websites mit Standardgröße, z. B. für Websites, auf denen ein Wordpress-Blog gehostet wird, nur eine etwa fünffache Leistungsverbesserung bedeuten würde.

"Wenn Sie PHP verwenden und es auf HipHop ausführen, ist die CPU-Ausführungszeit möglicherweise nicht der einschränkende Faktor für die Leistung. Möglicherweise verbringt [das System] zu viel Zeit mit dem Gespräch mit der Datenbank oder zu viel Zeit mit dem Gespräch mit [ die] Memcache "Caching-Ebene, sagte Pobar.

Joab Jackson berichtet über aktuelle Nachrichten zu Unternehmenssoftware und allgemeiner Technologie für The News Service . Folgen Sie Joab auf Twitter unter @Joab_Jackson. Die E-Mail-Adresse von Joab lautet [email protected]