Facebook optimiert HipHop for PHP
Kommentare

Die Entwickler von Facebook haben ihr Baby HipHop for PHP optimiert , um die Serverlast noch weiter zu reduzieren. Zusammen mit der Open-Source-Community konnte Facebook nach eigenen Angaben die Leistung

Die Entwickler von Facebook haben ihr Baby HipHop for PHP optimiert , um die Serverlast noch weiter zu reduzieren. Zusammen mit der Open-Source-Community konnte Facebook nach eigenen Angaben die Leistung noch einmal um unglaubliche 70 % steigern.

Die wichtigsten Änderungen im Überblick: den Anfang macht Alternative PHP Cache (APC). Die Entwickler haben den APC so modifiziert, dass auf fast alle Serialisierungs- und Deserialisierungs-Prozesse verzichten werden kann; die Semantik bleibt aber die gleiche. Da die Daten aber dennoch serialisiert oder JSON-encoded werden müssen, haben sich die Entwickler daran gemacht, auch diese Prozesse schneller ablaufen zu lassen. Optimiert wurden unter anderem die UTF8/UTF16-Konvertierung, der Object-Property-Accesses und das Number Parsing. Um weitere CPU-Zeit zu gewinnen, wurden verschiedene Compiler implementiert, um bei einigen Prozessen auf Reference-Counts verzichten zu können.

HipHop kompiliert die enormen Mengen an PHP-Codes in eine Anwendung und deployed diese zu den Web-Servern des Social Networks. Die Entwickler haben große Teile des Codes konsolidiert, um HipHop handlicher zu machen; unter anderem das Stack-Frame-Management und die Memory Allocation. Um Möglichkeiten für Einsparungen aufzuspüren, nutzten die Entwickler der jemalloc.

Neben dem Code wurde auch am Compiler selbst geschraubt: Parsing und Code-Generierung laufen nun beispielsweise parallel.

Mehr Power!

HipHop for PHP wandelt PHP-Skripte in C++-Quellcodes um, die dann mit g++ in native Maschinensprache übersetzt werden. Ziel ist es, die Prozesse zu verschlanken und die Leistung zu steigern. Facebook gab Anfang 2010 bekannt, so die Serverlast um rund 50% reduziert zu haben.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -