PHP 是最流行的用於 web 開發的指令碼語言之一。PHP 的最新版本,PHP 7 在效能上做了很大的最佳化。不過,PHP 還有一個競爭者 HHVM (HipHop Virtual Machine) — 一個運行 PHP 代碼的虛擬工具。二者直接的比較正在升溫,那麼讓我們來看一下他們直接的效能對比吧。
什麼是 HHVM?
在2008年,Facebook 啟動了一項工作,計劃開發一個工具 將 PHP 指令碼轉換成 C++,這樣就可以被編譯後在 網頁伺服器上運行。目的是節省伺服器資源,這是一個很重要的目標,因為 Facebook 的使用者量正在快速增長。從這個意義上講,這個項目是成功的,因為它可以讓伺服器處理之前五到六倍的請求量。
時間回到2010年,Facebook 的伺服器需求已經增加了很多,是時候考慮用新的創新來提升更大的效率。基於這個需求,Facebook 開發了 HHVM。
HHVM 使用了 Just-In-Time (JIT) 編譯方式將 PHP 代碼轉換成某種位元組碼。接下來把位元組碼再轉換成機器碼並進行最佳化,讓它儘可能快的運行。
什麼是PHP 7?
PHP 7 是 PHP 社區對 HHVM 的回應。PHP 7 發布的預覽版本號稱比之前的 PHP 5 的效能要提升100%。
你可能會問 PHP 的版本直接從 PHP5 跳到了 PHP7,答案是這樣的:PHP6 的開發開始於2005年,但是它的進展過於緩慢又出現了很多的問題,這樣 PHP6 在它還沒有發布正式版本之前就有了不好的名聲。所以PHP社區決定給這個語言的新版本直接命名為 PHP7。
真正的問題不是 PHP5 和 PHP7 之間的比較,因為已經很明顯了 PHP7 提供了更快速的運行速度。但是我們想比較的是 PHP7 和 HHVM。很多專家已經分別使用了這兩個方法來處理PHP代碼,並且揭示了一些有趣的結論。
比較 PHP7 和 HHVM 的異同:
在回答哪個更好之前,讓我們先來看一下他們之間的關鍵不同點和相似之處。
代碼解析:
PHP7 和 HHVM 之間的基本不同之處在於他們解析 PHP 代碼的方式。PHP7 使用標準的 PHP 解析器,它是一個可以給所有人使用的免費軟體,可以在伺服器上直接解析和運行。它產生 HTML 程式碼,然後發送給用戶端,用戶端顯示出使用者期望的內容。
相比之下,HHVM 首先把 PHP 代碼轉化為 HipHop 位元組代碼,這個代碼再被翻譯成機器碼然後執行。在這個過程中 HHVM 會對代碼進行最佳化,最佳化一些影響執行效率的 PHP 代碼,目標是提高運行速度。
編寫代碼:
PHP 解析器和 HHVM 都可以接收 PHP 代碼然後運行。這樣寫代碼的過程是完全一樣的。但是如果你想使用 HHVM,你需要在你的伺服器上安裝 HHVM 然後以命令列的方式通過 HHVM 命令來調用。
效能測試:
HHVM 比之前的 PHP 版本能提供更快速的效能。但是最近的效能測試認為至少在某些情況下 PHP7 是比 HHVM 稍微快些。讓我們來看一下由 Kinsta 來做的效能測試結果:
WordPress:運行在WordPress4.1.1的 PHP7 每秒鐘比 PHP5.6 能執行超過兩倍的請求,但是沒有 HHVM3.6.1 提供的多,在測試中 HHVM 每秒鐘執行624個請求而 PHP7 只執行604個。
Drupal:PHP7 可以給 Drupal 使用者提供比 HHVM 更加明顯的優勢。PHP7 在 Drupal8 上的處理響應效率比 HHVM 高出超過37個百分點。
那些公司使用 HHVM?
除了開發出 HHVM 的 FaceBook 公司外,還有很多其他公司也採用了這個方案,在伺服器上用 HHVM 運行 PHP 應用,包括 Wikimedia 和電子商務網站 Etsy。
Wikimedia:Wikimedia 擁有大量的教育內容,包括著名的線上百科全書維基百科。維基百科每 個月吸引著近五億的互連網使用者,為了滿足這樣進階的需求,需要最佳化伺服器的效能,和 PHP相比 HHVM 有一個顯著的優點,它可以同時載入多個 SPU 核心, 而 PHP 是單線程語言,不能被並行化。維基百科部署了 HHVM 後,CPU 的負載從50%降到了10%,使用者提交編輯時的平均回應時間減少到原來的一半,頁面的平均載入時間從原來的1.3秒降到了0.9秒。
Etsy: 擁有五千四百萬使用者的 Tesy 同樣迫切需要提高伺服器效能,Etsy 的工程師對比了HHVM 和 PHP5.4 的效能,發現 HHVM 每秒可以處理280個伺服器請求,而對於 PHP5.4,如果每秒的請求數超過了190次,伺服器的回應時間就會急劇增加。
PHP 7 和 HHVM的前景如何?
由於 PHP 7 的穩定版本將在2015年11月發布,因此目前還沒有公司使用這個新的語言,由於 PHP 7 的 beta 版在基準測試中表現出色,未來能夠吸引更多公司使用 PHP 7。
PHP 的前途一片光明,那麼 HHVM呢?它可能會繼續活得很好。很多公司已經在網站中使用了 HHVM提高效能,在 PHP 和 HHVM 之間遷移不是一蹴而就的。Etsy 花了至少6個月的時間。由於 PHP7 和HHVM 相比效能提升不大,那些公司不太可能急於切換到PHP。
Facebook 仍然會繼續開發 HHVM。它最近宣布支援蘋果的作業系統,使在蘋果開發環境下工作的開發人員可以使用這個技術。HHVM 的開發人員相信在很多情況下 HHVM 比 PHP7 更快,包括 WorldPress。
為什麼 HHVM 和 PHP 7 對於網店老闆存在競爭關係?
作為一個網店老闆,你需要根據你的網店所在的平台決定是否使用 PHP7 或 HHVM。如果你的網站是用 WorldPress 建立的,那麼你可以看看最新版本的 HHVM 和 PHP 7 的基準測試結果,從測試結果可以發現兩者在效能上的差異,然後你就可以選擇解決方案,最大限度地減小頁面載入時間,伺服器回應時間和 CPU 使用率。
選擇 HHVM 的原因
HHVM 使用動態翻譯技術,在大多數情況下(包括WordPress)可以提供更高的效能。
HHVM 在處理大量請求時,可以保證每個請求只使用少量的記憶體。
HHVM 開發人員正在穩步增加這個引擎所能啟動並執行 PHP 代碼的數量,它已經可以運行最新版本的 WorldPress,以及其他常見的 PHP 架構和應用。
HHVM 是開源的,儘管 HHVM 是 Facebook 開發的,但它是開源的,意味著任何人都可以使用和修改它的源碼。
選擇 PHP 7 的理由
PHP 7 在某些情況下比 HHVM 更快,包括運行 Drupal 8。
使用 PHP 7 不需要安裝設定 HHVM。
儘管很多 PHP 4 的功能在新版本中不再支援,但用 PHP 5 寫的代碼在轉換到 PHP 7 後將會如預期一樣工作。
PHP 7 由 PHP 社區開發,這是一群開發穩定可靠 PHP 版本久負盛名的人。
HHVM vs. PHP 7: 作出你的選擇
不要猶豫太久,Kinsta 建議那些線上的網站盡量在 PHP 7 與 HHVM 之間作出選擇,早點開始實施解決方案,讓你的網站效能得到最佳化。一個低效的網站也會讓你的聲譽受損,那將很難挽回。