CLI中的HHVM慢于PHP 5.5.9

时间:2015-07-03 08:21:40

标签: php codeigniter hhvm

好的,所以我确实想要使用并相信HHVM,但是在我执行的每个测试中,HHVM都比PHP慢。我已经运行了许多不同的测试,一些非常复杂的脚本,有很多处理简单的脚本。为了演示,我将用(真的)简单的脚本向您展示结果。

public function hhvm(){
  $list = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25);

  $this->benchmark->mark('code_start');

  for ($i=0 ; $i<100 ; $i++) {
  serialize($list);
  }

  $this->benchmark->mark('code_end');
  echo $this->benchmark->elapsed_time('code_start', 'code_end');
}

HHVM和PHP都在CLI中运行在同一台服务器上:系统是......

  • Ubuntu 14.04
  • RAID 0中的4个SSD
  • 2x Hexcore Xeons
  • 64GB Ram
  • Codeigniter 3.0(框架)
  • PHP 5.5.9
  • HHVM(2015年2月7日最新稳定版)

此脚本在以下每个命令下运行20次,结果如下:

"hhvm /var/www/vhosts/test.local/httpdocs/index.php test hhvm"

平均执行时间= 0.0021

"hhvm -v Eval.Jit=1 -v Eval.JitProfileInterpRequests=0 /var/www/vhosts/test.local/httpdocs/index.php test hhvm"

平均执行时间= 0.0020

"php /var/www/vhosts/test.local/httpdocs/index.php test hhvm"

平均执行时间= 0.0003

显然这是一个小脚本,我通过它运行了更大的脚本,我看到的时间是PHP = 5.2s HHVM = 6.4s,这看起来并不多,但是当你运行的太多时这一切都加起来。

所以我的问题是......我到底做错了什么?为什么我不能将HHVM设置为比PHP更快地运行。 (它是否与CI3.0不兼容?即使HHVM站点说100%兼容?)

编辑: 所以在搜索和搜索之后似乎没有人可以提供答案,我已经在没有使用标准PHP的CI3框架工作的情况下进行了测试,结果几乎相同,我已经在不同论坛上请求其他3个人进行测试并且他们得到完全一样的结果。我的结论是,HHVM是一种炒作,在现实世界的场景中,它并没有削减芥末。如果有任何人可以证明我错了,我很乐意听取你的意见,理论上,HHVM听起来很神奇,我很乐意使用能够像你声称的那样优化代码执行的东西。

1 个答案:

答案 0 :(得分:1)

我遇到了hhvm的糟糕表现我从未将它与普通的php进行比较,但在我的情况下,这是由于php.ini默认启用了错误记录这一事实。当我关闭它时,性能提升了很多。

另一件事是你关闭了热身请求。此功能是出于优化的原因。在某些情况下,将此值向上调整并首先运行多次可能会有所帮助。

这也是codeignighter导致问题的机会。在全球范围内运行似乎会使性能下降。我并不熟悉代码点火器的构造方式。但似乎从函数中运行尽可能多的代码并且只在全局范围内调用函数有很大帮助。