Facebook изобретява PHP виртуална машина

Гигантът за социални мрежи Facebook направи още една стъпка, за да ускори работата на езика за програмиране PHP Web. Компанията е разработила PHP Virtual Machine, за която казва, че може да изпълнява езика до девет пъти по-бързо, отколкото да изпълнява PHP в основни системи.

"Нашата цел е да накараме PHP да работи много, много бързо", каза Джоел Побар, инженерен мениджър на Facebook. Facebook използва виртуалната машина, наречена HHVM (HipHop Virtual Machine), на всички свои сървъри от по-рано тази година.

[Научете как да работите по-умно, не по-трудно с обобщаването на всички съвети и тенденции, които програмистите трябва да знаят в Ръководството за оцеляване на разработчиците. Изтеглете PDF днес! | Бъдете в крак с последните новини за разработчици с бюлетина на Developer World. ]

Побар обсъди виртуалната машина на OSCON (O'Reilly Open Source Conference), която се провежда тази седмица в Портланд, Орегон.

HHVM не е първият опит на Facebook да персонализира PHP за по-бързо използване. PHP е интерпретиран език, което означава, че изходният код се изпълнява директно от процесора. Най-общо казано, програми, написани на интерпретирани езици като PHP, обикновено не се изпълняват толкова бързо, колкото езици, като C или C ++, които са предварително компилирани в байт код на машинен език. Facebook остава лоялен към PHP, защото е широко разбран от много от уеб програмистите, които работят за компанията.

За да бъде в крак с ненаситното потребителско търсене обаче, Facebook първоначално разработи компилатор, наречен HipHop, който ще преведе PHP кода в C ++, така че той може да бъде компилиран преди време за по-бърза работа.

Докато Facebook се радваше на значителна печалба в производителността на тази първа версия на HipHop в продължение на няколко години, той търсеше други начини да ускори доставката на динамично създадените уеб страници на своите около милиард потребители. „Стратегията ни за изпълнение за това щяла да се използва“, призна Побар.

HHVM е следващата стъпка за Facebook. В процес на разработка от около три години, HHVM всъщност работи на същия принцип като JVM (Java Virtual Machine). HHVM има JIT (just-in-time) компилатор, който преобразува човешки четим изходен код в машинно четим байт код, когато е необходим. (Предишният HipHop, преименуван на HPHPc, вече е оттеглен във Facebook.)

Този подход на JIT позволява на виртуалната машина да "взема по-интелигентни решения по време на изпълнение", каза Побар. Например, ако се направи повикване към базата данни MySQL, за да се прочете ред данни, HHVM може в движение да разбере какъв тип данни е, като цяло число или низ. Тогава той може да генерира или извиква код в движение, който би бил най-подходящ за обработка на този конкретен тип данни.

Със стария HipHop, "най-доброто, което може да направи, е да анализира цялата кодова база на Facebook, да разсъждава за това и след това да специализира кода въз основа на неговите разсъждения. Но не може да получи всички разсъждения правилни. Има части от кодовата основа, които не можете просто да заключите или да разсъждавате за това ", каза Побар.

Pobar изчисли, че HHVM е около два пъти по-бърз от HPHPc и около девет пъти по-бърз от това да работи директно PHP.

Facebook публикува кода за HHVM на GitHub, с надеждата и други да го използват, за да ускорят своите PHP уебсайтове.

HHVM е оптимизиран за работа с много големи и широко използвани PHP кодови бази. Побар смяташе, че използването на HHVM за уебсайтове със стандартен размер, като например хостинг на блог на Wordpress, ще спечели само около петкратно подобрение на производителността.

"Ако вземете малко PHP и го стартирате на HipHop, времето за изпълнение на процесора [може] да не е ограничаващ фактор за производителност. Шансовете са [системата да] прекарва твърде много време в разговор с базата данни или да прекарва твърде много време в разговор с [ кеширащият слой] memcache ", каза Побар.

Joab Jackson обхваща корпоративния софтуер и общите новини за технологичните новини за News Service . Следвайте Joab в Twitter на @Joab_Jackson. Имейл адресът на Joab е [email protected]