Facebook inventa una macchina virtuale PHP

Il gigante dei social network Facebook ha compiuto un altro passo per rendere più veloce il linguaggio di programmazione Web PHP. L'azienda ha sviluppato una macchina virtuale PHP che, secondo quanto afferma, può eseguire il linguaggio fino a nove volte più velocemente rispetto all'esecuzione nativa di PHP su sistemi di grandi dimensioni.

"Il nostro obiettivo è far funzionare PHP molto, molto velocemente", ha affermato Joel Pobar, un responsabile tecnico di Facebook. Facebook ha utilizzato la macchina virtuale, chiamata HHVM (HipHop Virtual Machine), su tutti i suoi server dall'inizio di quest'anno.

[Impara a lavorare in modo più intelligente, non più difficile con la raccolta di tutti i suggerimenti e le tendenze che i programmatori devono conoscere nella Guida alla sopravvivenza per gli sviluppatori. Scarica oggi il PDF! | Tieniti aggiornato sulle ultime notizie dagli sviluppatori con la newsletter di Developer World. ]

Pobar ha discusso della macchina virtuale all'OSCON (O'Reilly Open Source Conference) che si terrà questa settimana a Portland, Oregon.

HHVM non è la prima incursione di Facebook nella personalizzazione di PHP per un utilizzo più rapido. PHP è un linguaggio interpretato, il che significa che il codice sorgente viene eseguito direttamente dal processore. In generale, i programmi scritti in linguaggi interpretati come PHP tendono a non essere eseguiti rapidamente come i linguaggi, come C o C ++, che sono stati compilati in precedenza in codice byte in linguaggio macchina. Facebook è rimasto fedele a PHP perché è ampiamente compreso da molti dei programmatori Web che lavorano per l'azienda.

Per tenere il passo con l'insaziabile domanda degli utenti, tuttavia, Facebook ha originariamente ideato un compilatore, chiamato HipHop, che traduceva il codice PHP in C ++, quindi poteva essere compilato in anticipo per prestazioni più veloci.

Sebbene Facebook abbia goduto di notevoli miglioramenti delle prestazioni di questa prima versione di HipHop per diversi anni, ha cercato altri modi per accelerare la consegna delle pagine Web create dinamicamente ai suoi miliardi di utenti. "La nostra strategia di performance per questo sarebbe andata a finire", ha ammesso Pobar.

HHVM è il passo successivo per Facebook. In fase di sviluppo da circa tre anni, HHVM funziona effettivamente sullo stesso principio della JVM (Java Virtual Machine). HHVM ha un compilatore JIT (just-in-time) che converte il codice sorgente leggibile dall'uomo in codice byte leggibile dalla macchina quando è necessario. (Il precedente HipHop, ribattezzato HPHPc, è stato ritirato da Facebook.)

Questo approccio JIT consente alla macchina virtuale di "prendere decisioni più intelligenti in fase di esecuzione", ha affermato Pobar. Ad esempio, se viene effettuata una chiamata al database MySQL per leggere una riga di dati, l'HHVM può, al volo, capire di che tipo di dati si tratta, come un numero intero o una stringa. Quindi può generare o chiamare il codice al volo che sarebbe più adatto per la gestione di questo particolare tipo di dati.

Con il vecchio HipHop, "il meglio che può fare è analizzare l'intero codice base di Facebook, ragionarlo e poi specializzare il codice in base al suo ragionamento. Ma non riesce a ottenere tutto il ragionamento corretto. Ci sono parti del codice base che non si può semplicemente dedurre o ragionare ", ha detto Pobar.

Pobar ha stimato che HHVM è circa due volte più veloce di HPHPc e circa nove volte più veloce di un PHP diretto.

Facebook ha pubblicato il codice per HHVM su GitHub, con la speranza che altri lo utilizzino per velocizzare anche i loro siti Web PHP.

HHVM è ottimizzato per la gestione di basi di codice PHP molto grandi e molto utilizzate. Pobar ha calcolato che l'utilizzo di HHVM per siti Web di dimensioni standard, come uno che ospita un blog Wordpress, avrebbe ottenuto solo un miglioramento delle prestazioni di circa cinque volte.

"Se prendi un po 'di PHP e lo esegui su HipHop, il tempo di esecuzione della CPU [potrebbe] non essere il fattore limitante per le prestazioni. È probabile che [il sistema] passi troppo tempo a parlare con il database o che passi troppo tempo a parlare con [ il livello di memorizzazione nella cache] memcache ", ha detto Pobar.

Joab Jackson copre il software aziendale e le ultime novità tecnologiche per The News Service . Segui Joab su Twitter all'indirizzo @Joab_Jackson. L'indirizzo di posta elettronica di Joab è [email protected]