PHP7對(duì)陣HHVM會(huì)有怎樣的新能變化
2019-09-15
在2008年,F(xiàn)acebook 啟動(dòng)了一項(xiàng)工作,計(jì)劃開(kāi)發(fā)一個(gè)工具 將 PHP 腳本轉(zhuǎn)換成 C++,這樣就可以被編譯后在 web 服務(wù)器上運(yùn)行。目的是節(jié)省服務(wù)器資源,這是一個(gè)很重要的目標(biāo),因?yàn)?Facebook 的用戶量正在快速增長(zhǎng)。從這個(gè)意義上講,這個(gè)項(xiàng)目是成功的,因?yàn)樗梢宰尫?wù)器處理之前五到六倍的請(qǐng)求量。
時(shí)間回到2010年,F(xiàn)acebook 的服務(wù)器需求已經(jīng)增加了很多,是時(shí)候考慮用新的創(chuàng)新來(lái)提升更大的效率?;谶@個(gè)需求,F(xiàn)acebook 開(kāi)發(fā)了 HHVM。
HHVM 使用了 Just-In-Time (JIT) 編譯方式將 PHP 代碼轉(zhuǎn)換成某種字節(jié)碼。接下來(lái)把字節(jié)碼再轉(zhuǎn)換成機(jī)器碼并進(jìn)行優(yōu)化,讓它盡可能快的運(yùn)行。
PHP 7 是 PHP 社區(qū)對(duì) HHVM 的回應(yīng)。PHP 7 發(fā)布的預(yù)覽版本號(hào)稱比之前的 PHP 5 的性能要提升100%。
你可能會(huì)問(wèn) PHP 的版本直接從 PHP5 跳到了 PHP7,答案是這樣的:PHP6 的開(kāi)發(fā)開(kāi)始于2005年,但是它的進(jìn)展過(guò)于緩慢又出現(xiàn)了很多的問(wèn)題,這樣 PHP6 在它還沒(méi)有發(fā)布正式版本之前就有了不好的名聲。所以PHP社區(qū)決定給這個(gè)語(yǔ)言的新版本直接命名為 PHP7。
真正的問(wèn)題不是 PHP5 和 PHP7 之間的比較,因?yàn)橐呀?jīng)很明顯了 PHP7 提供了更快速的運(yùn)行速度。但是我們想比較的是 PHP7 和 HHVM。很多專家已經(jīng)分別使用了這兩個(gè)方法來(lái)處理PHP代碼,并且揭示了一些有趣的結(jié)論。
在回答哪個(gè)更好之前,讓我們先來(lái)看一下他們之間的關(guān)鍵不同點(diǎn)和相似之處。
代碼解析:
PHP7 和 HHVM 之間的基本不同之處在于他們解析 PHP 代碼的方式。PHP7 使用標(biāo)準(zhǔn)的 PHP 解析器,它是一個(gè)可以給所有人使用的免費(fèi)軟件,可以在服務(wù)器上直接解析和運(yùn)行。它生成 HTML 代碼,然后發(fā)送給客戶端,客戶端顯示出用戶期望的內(nèi)容。
相比之下,HHVM 首先把 PHP 代碼轉(zhuǎn)化為 HipHop 字節(jié)代碼,這個(gè)代碼再被翻譯成機(jī)器碼然后執(zhí)行。在這個(gè)過(guò)程中 HHVM 會(huì)對(duì)代碼進(jìn)行優(yōu)化,優(yōu)化一些影響執(zhí)行效率的 PHP 代碼,目標(biāo)是提高運(yùn)行速度。
編寫(xiě)代碼
PHP 解析器和 HHVM 都可以接收 PHP 代碼然后運(yùn)行。這樣寫(xiě)代碼的過(guò)程是完全一樣的。但是如果你想使用 HHVM,你需要在你的服務(wù)器上安裝 HHVM 然后以命令行的方式通過(guò) HHVM 命令來(lái)調(diào)用。
性能測(cè)試:
HHVM 比之前的 PHP 版本能提供更快速的性能。但是最近的性能測(cè)試認(rèn)為至少在某些情況下 PHP7 是比 HHVM 稍微快些。讓我們來(lái)看一下由 Kinsta 來(lái)做的性能測(cè)試結(jié)果:
WordPress:運(yùn)行在WordPress4.1.1的 PHP7 每秒鐘比 PHP5.6 能執(zhí)行超過(guò)兩倍的請(qǐng)求,但是沒(méi)有 HHVM3.6.1 提供的多,在測(cè)試中 HHVM 每秒鐘執(zhí)行624個(gè)請(qǐng)求而 PHP7 只執(zhí)行604個(gè)。
Drupal:PHP7 可以給 Drupal 用戶提供比 HHVM 更加明顯的優(yōu)勢(shì)。PHP7 在 Drupal8 上的處理響應(yīng)效率比 HHVM 高出超過(guò)37個(gè)百分點(diǎn)。
除了開(kāi)發(fā)出 HHVM 的 FaceBook 公司外,還有很多其他公司也采用了這個(gè)方案,在服務(wù)器上用 HHVM 運(yùn)行 PHP 應(yīng)用,包括 Wikimedia 和電子商務(wù)網(wǎng)站 Etsy。
Wikimedia:Wikimedia 擁有大量的教育內(nèi)容,包括著名的在線百科全書(shū)維基百科。維基百科每 個(gè)月吸引著近五億的互聯(lián)網(wǎng)用戶,為了滿足這樣高級(jí)的需求,需要優(yōu)化服務(wù)器的性能,和 PHP相比 HHVM 有一個(gè)顯著的優(yōu)點(diǎn),它可以同時(shí)加載多個(gè) SPU 核心, 而 PHP 是單線程語(yǔ)言,不能被并行化。維基百科部署了 HHVM 后,CPU 的負(fù)載從50%降到了10%,用戶提交編輯時(shí)的平均響應(yīng)時(shí)間減少到原來(lái)的一半,頁(yè)面的平均加載時(shí)間從原來(lái)的1.3秒降到了0.9秒。
Etsy: 擁有五千四百萬(wàn)用戶的 Tesy 同樣迫切需要提高服務(wù)器性能,Etsy 的工程師對(duì)比了HHVM 和 PHP5.4 的性能,發(fā)現(xiàn) HHVM 每秒可以處理280個(gè)服務(wù)器請(qǐng)求,而對(duì)于 PHP5.4,如果每秒的請(qǐng)求數(shù)超過(guò)了190次,服務(wù)器的響應(yīng)時(shí)間就會(huì)急劇增加。
PHP7 穩(wěn)定版將發(fā)布于2015年11月。因此,公司尚未使用新的語(yǔ)言,但 PHP7 測(cè)試版的性能有希望的基準(zhǔn)測(cè)試結(jié)果可以吸引更多的公司使用新版本。
未來(lái)是 PHP7 的時(shí)代,那 HHVM 呢?很遺憾,它是離死不遠(yuǎn)了。雖然現(xiàn)在許多企業(yè)已經(jīng)在使用 HHVM增加在其網(wǎng)站上的表現(xiàn)。但是 PHP 和 HHVM 之間的過(guò)渡不是瞬間就能完成的。Etsy(一個(gè)網(wǎng)絡(luò)商店平臺(tái))花了的半年多時(shí)間來(lái)完成過(guò)渡。在和 PHP7 相比,HHVM 暫時(shí)只有很輕微的速度好處,企業(yè)會(huì)急著切換回 PHP。
Facebook 正在繼續(xù)開(kāi)發(fā) HHVM。它最近宣布了對(duì) Mac OS X 的支持,使該技術(shù)讓蘋(píng)果開(kāi)發(fā)者便于使用。HHVM 開(kāi)發(fā)商相信他們的 HHVM 仍比 PHP7 快,在很多情況下,包括與 WordPress。
作為一個(gè)網(wǎng)店老板,你需要根據(jù)你的網(wǎng)店所在的平臺(tái)決定是否使用 PHP7 或 HHVM。如果你的網(wǎng)站是用 WorldPress 創(chuàng)建的,那么你可以看看最新版本的 HHVM 和 PHP 7 的基準(zhǔn)測(cè)試結(jié)果,從測(cè)試結(jié)果可以發(fā)現(xiàn)兩者在性能上的差異,然后你就可以選擇解決方案,最大限度地減小頁(yè)面加載時(shí)間,服務(wù)器響應(yīng)時(shí)間和 CPU 使用率。
選擇 HHVM 的原因
HHVM 使用動(dòng)態(tài)翻譯技術(shù),在大多數(shù)情況下(包括WordPress)可以提供更高的性能。
HHVM 在處理大量請(qǐng)求時(shí),可以保證每個(gè)請(qǐng)求只使用少量的內(nèi)存。
HHVM 開(kāi)發(fā)者正在穩(wěn)步增加這個(gè)引擎所能運(yùn)行的 PHP 代碼的數(shù)量,它已經(jīng)可以運(yùn)行最新版本的 WorldPress,以及其他常見(jiàn)的 PHP 框架和應(yīng)用。
HHVM 是開(kāi)源的,盡管 HHVM 是 Facebook 開(kāi)發(fā)的,但它是開(kāi)源的,意味著任何人都可以使用和修改它的源碼。
PHP 7 在某些情況下比 HHVM 更快,包括運(yùn)行 Drupal 8。
使用 PHP 7 不需要安裝設(shè)置 HHVM。
盡管很多 PHP 4 的功能在新版本中不再支持,但用 PHP 5 寫(xiě)的代碼在轉(zhuǎn)換到 PHP 7 后將會(huì)如預(yù)期一樣工作。
PHP 7 由 PHP 社區(qū)開(kāi)發(fā),這是一群開(kāi)發(fā)穩(wěn)定可靠 PHP 版本久負(fù)盛名的人。
不要猶豫太久,Kinsta 建議那些在線的網(wǎng)站盡量在 PHP 7 與 HHVM 之間作出選擇,早點(diǎn)開(kāi)始實(shí)施解決方案,讓你的網(wǎng)站性能得到優(yōu)化。一個(gè)低效的網(wǎng)站也會(huì)讓你的聲譽(yù)受損,那將很難挽回。
相對(duì)于舊版本的 PHP,HHVM and PHP 7 都更有益。作出決定,盡快將你的網(wǎng)站切換到新的系統(tǒng)。