PHP 5.5 / PHP5.6 / PHP-NG 和 HHVM 哪個效能更好?

Mark Gavalda發表於2015-04-08

摘要:在一個基於Vagrant的本地環境中,可能是某個錯誤的原因,導致HHVM測試結果很差;在HHVM夥伴們協助下,該原因仍在研究中!然而,在DigitalOcean的一個4GB虛擬機器中,HHVM甚至蓋過了最新版的PHP-NG的風頭!

PHP 5.5 / PHP5.6 / PHP-NG 和 HHVM 哪個效能更好?

結論:它們反映出HHVM的功效更佳(在JIT熱啟動後),雖然出於某些原因,我們不能在所有裝備中獲取這些結果。

如果你記得我們在幾個月前寫過一篇文章,那時WordPress 3.9表明是完全支援HHVM的,當時是那麼令我們歡欣鼓舞。最初的基準測試結果顯示,HHVM要比驅動著當前所有PHP構建的Zend引擎高階得多。後來,問題就出來了:

  • HHVM只能以單個使用者執行,這意味著(在共享環境中)安全性差了
  • HHVM在崩潰後不會自動重啟,而不幸的是,它至今仍然經常發生
  • HHVM在啟動時使用大量記憶體,雖然,它和同規模的PHP-FPM比較,單個請求的記憶體使用量更低

很顯然,你不得不根據你的(或者更確切地說是你的站點)的需求採取折中方案,然而這值得嗎?切換到HHVM後,你期望獲得多少效能改善呢?

在Kinsta,我們真的想要測試所有新技術,並通常會優化這一切來為我們的客戶提供最佳的環境。今天,我最終花了點時間來配置測試環境並進行了一些測試來對比兩個不同的構建,一個是全新出爐的WordPress安裝,另外一個則新增了大量內容的WooCommerce!為了計量指令碼的執行時間,我只是簡單地新增了

<?php timer_stop(1); ?>

這一行到footer.php的/body標記前。

這裡是配置環境的詳情:

  • DigitalOcean 4GB 雨滴容器 (2 CPU核心, 4GB RAM)
  • Ubuntu 14.04, MariaDB10
  • 測試站點: 已匯入演示內容的Munditia主題,WooCommerce 2.1.12 & WordPress 3.9.1
  • PHP 5.5.9, PHP 5.5.15, PHP 5.6.0 RC2, PHP-NG (20140718-git-6cc487d)和HHVM 3.2.0 (版本是PHP 5.6.99-hhvm)

沒有進一步大費周章,這些就是我的測試結果,數值越低越好,以秒為單位:

DigitalOcean 4GB 雨滴容器

單位是秒,執行10次,越低越好

PHP 5.5 / PHP5.6 / PHP-NG 和 HHVM 哪個效能更好?

看起來似乎PHP-NG在它首次執行後就獲得了峰值效能!HHVM需要更多幾次過載,但是它們的效能貌似差不多!我等不及PHP-NG合併到開發主幹了!:)

一分鐘命中數,越高越好。

PHP 5.5 / PHP5.6 / PHP-NG 和 HHVM 哪個效能更好?

PHP 5.5.15禁用OpCache

  • 執行: 236 hits
  • 可用性: 100.00 %
  • 消耗時間: 59.03 secs
  • 傳輸的資料: 2.40 MB
  • 回應時間: 2.47 secs
  • 執行率: 4.00 trans/sec
  • 吞吐量: 0.04 MB/sec
  • 併發數: 9.87
  • 成功的執行: 236
  • 失敗的執行: 0
  • 最長執行: 4.44
  • 最短執行: 0.48

PHP 5.5.15啟用OpCache

  • 執行: 441 hits
  • 可用性: 100.00 %
  • 消耗時間: 59.55 secs
  • 傳輸的資料: 4.48 MB
  • 回應時間: 1.34 secs
  • 執行率: 7.41 trans/sec
  • 吞吐量: 0.08 MB/sec
  • 併發數: 9.91
  • 成功的執行: 441
  • 失敗的執行: 0
  • 最長執行: 2.19
  • 最短執行: 0.64

PHP 5.6 RC2禁用OpCache

  • 執行: 207 hits
  • 可用性: 100.00 %
  • 消耗時間: 59.87 secs
  • 傳輸的資料: 2.10 MB
  • 回應時間: 2.80 secs
  • 執行率: 3.46 trans/sec
  • 吞吐量: 0.04 MB/sec
  • 併發數: 9.68
  • 成功的執行: 207
  • 失敗的執行: 0
  • 最長執行: 3.65
  • 最短執行: 0.54

PHP 5.6 RC2啟用OpCache

  • 執行: 412 hits
  • 可用性: 100.00 %
  • 消耗時間: 59.03 secs
  • 傳輸的資料: 4.18 MB
  • 回應時間: 1.42 secs
  • 執行率: 6.98 trans/sec
  • 吞吐量: 0.07 MB/sec
  • 併發數: 9.88
  • 成功的執行: 412
  • 失敗的執行: 0
  • 最長執行: 1.93
  • 最短執行: 0.34

HHVM 3.2.0(版本是PHP 5.6.99-hhvm)

  • 執行: 955 hits
  • 可用性: 100.00 %
  • 消耗時間: 59.69 secs
  • 傳輸的資料: 9.18 MB
  • 回應時間: 0.62 secs
  • 執行率: 16.00 trans/sec
  • 吞吐量: 0.15 MB/sec
  • 併發數: 9.94
  • 成功的執行: 955
  • 失敗的執行: 0
  • 最長執行: 0.85
  • 最短執行: 0.23

PHP-NG啟用OpCache(構建: Jul 29 2014)

  • 執行: 849 hits
  • 可用性: 100.00 %
  • 消耗時間: 59.88 secs
  • 傳輸的資料: 8.63 MB
  • 回應時間: 0.70 secs
  • 執行率: 14.18 trans/sec
  • 吞吐量: 0.14 MB/sec
  • 併發數: 9.94
  • 成功的執行: 849
  • 失敗的執行: 0
  • 最長執行: 1.06
  • 最短執行: 0.13

注意:這裡節略了前一次的測試結果(有誤),如感興趣請訪問原文檢視。

相關文章