Facebook nidobler hastigheden med virtuel PHP-maskine

Illustration:
Facebook går væk fra at oversætte PHP-kode til C++ via en compiler til nu at oversætte koden i realtid til bytecode, som afvikles på en særlig virtuel maskine. Det gør det muligt at optimere SQL-kald.

Selv små forbedringer af den kode, der udgør rygraden i det sociale netværk Facebook, kan gøre en stor forskel, når vi taler om en webapplikation, som har tæt ved en milliard brugere. Derfor har Facebook nu udviklet en ny måde at få PHP-koden til at køre hurtigere, skriver InfoWorld.

Facebook har i nogle år benyttet en oversætter eller compiler, som har oversat PHP-applikationskoden til C++, som derefter kunne oversættes til maskinkode og køre meget hurtigere, end hvis PHP-koden skulle fortolkes på normal vis.

Den metode er imidlertid ikke ideel, selvom den gav store forbedringer af hastigheden. Derfor er Facebook for nylig gået over til en ny teknologi, som firmaet har arbejdet på de seneste tre år.

Den går ud på at bruge en just-in-time-oversætter fra PHP direkte til bytecode, som kan afvikles på en særlig virtuel maskine. Ved at benytte denne metode er det muligt at lave små optimeringer i forhold til den aktuelle situation.

Eksempelvis kan et SQL-kald optimeres i forhold til, hvilken type data der skal hentes på det pågældende tidspunkt. Tidligere var man nødt til at vælge en metode på forhånd ud fra, hvad der var mest sandsynligt. Nu kan man optimere i forhold til, om der skal hentes et heltal eller en tekststreng.

Ifølge Facebook er den nye metode dobbelt så hurtig som den gamle, og systemet kan ifølge Facebook afvikle PHP ni gange så hurtigt, som PHP-kode der fortolkes på normal vis.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (5)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Carsten Gehling

Ifølge Facebook er den nye metode dobbelt så hurtig som den gamle, og systemet kan ifølge Facebook afvikle PHP ni gange så hurtigt, som PHP-kode der fortolkes på normal vis.

Så Facebook nidobler altså ikke hastigheden i forhold til, hvordan det har kørt de seneste år. De fordobler den. ;-)

  • 8
  • 1
Andre Picque

Så Facebook nidobler altså ikke hastigheden i forhold til, hvordan det har kørt de seneste år. De fordobler den. ;-)

Der står ikke at de nidobler applikationens hastighed i overskriften, og de afvikler jo netop deres PHP ni gange så hurtigt som normalt. Man kunne godt tolke den som du gør, men den er ikke entydig, og derfor vil jeg arkivere det under flueknepperi.

  • 3
  • 4
Mike Mikjær Blogger

Muligvis, men der er ingen tvivl om at bloggeren bevist forsøger at puste tallene op for at få det til at lyde mere imponerende end det er når han skriver sådan. I bund og grund skyldes det nok at han ikke helt forstår sig på emnet, det havde f.eks. været meget mere interesant hvis der havde stået "Facebook lancerer Just in time compilation til PHP Kode" ... for det er jo reelt det der er nyheden :-)

Og så er jeg lidt imponeret over at JIT er hurtigere en kompileret C++

  • 7
  • 1
Peter Makholm Blogger

Og så er jeg lidt imponeret over at JIT er hurtigere en kompileret C++

Jeg tror at det afhænger noget af hvilke genveje man tager, specielt om man ønsker at kunne håndtere libraries som separate oversættelser.

I så fald vil en JIT ofte have langt bedre mulighed for at inline kode og tage den rigtige beslutning om optimeringer baseret på tilgængelig type-information, fremfor at skulel genererer kode der kan håndtere alle muligheder i PHP's dynamiske type-system.

  • 0
  • 0
Log ind eller Opret konto for at kommentere