摘要:在一个基于Vagrant的本地环境中,可能是某个错误的原因,导致HHVM测试结果很差;在HHVM伙伴们协助下,该原因仍在研究中!然而,在DigitalOcean的一个4GB虚拟机中,HHVM甚至盖过了最新版的PHP-NG的风头!
结论:它们反映出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-NG在它首次运行后就获得了峰值性能!HHVM需要更多几次重载,但是它们的性能貌似差不多!我等不及PHP-NG合并到开发主干了!:)
一分钟命中数,越高越好。
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
注意:这里节略了前一次的测试结果(有误),如感兴趣请访问原文查看。