首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HHVM性能差

HHVM性能差
EN

Stack Overflow用户
提问于 2013-07-27 22:19:31
回答 2查看 14.5K关注 0票数 43

我正在评估HipHop-PHP在我们的代码库上的兼容性和性能,但当我在启用内置web服务器的情况下运行它时,我的性能非常差。

我有以下示例测试程序,用于计算Fibonacci序列。

ex3.php:

代码语言:javascript
复制
function fib($n)
{
    if ($n <= 2)
        return 1;
    else
        return fib($n-1) + fib($n-2);
}

$n = 36;
printf("fib(%d) = %d\n", $n, fib($n, 2));

当我使用命令行通过HHVM运行它时,我得到了令人印象深刻的结果:

代码语言:javascript
复制
time hhvm -v"Eval.Jit=true" -f ./ex3.php
fib(36) = 14930352

real    0m0.267s
user    0m0.248s
sys     0m0.020s

将其与标准PHP进行比较:

代码语言:javascript
复制
root@hiphop:/www# time php -f ./ex3.php
fib(36) = 14930352

real    0m5.606s
user    0m5.600s
sys     0m0.000s    

但是,当我想在HHVM中启用内置web服务器时,所有性能提升都会丢失:

代码语言:javascript
复制
hhvm -v"Eval.Jit=true" -m server -p 8000 &
time wget -qSO - http://localhost:8000/ex3.php
  HTTP/1.1 200 OK
  Content-Type: text/html; charset=utf-8
  X-Powered-By: HPHP
  Date: Sat, 27 Jul 2013 14:16:09 GMT
  Content-Length: 19
fib(36) = 14930352

real    0m5.279s
user    0m0.000s
sys     0m0.000s

正如您所看到的,我正在从HHVM获得响应,但是它处理这个请求花费了超过5秒的时间。我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-29 05:55:16

HHVM工程师在这里。

在服务器模式下,HHVM将运行它在仅解释器模式下看到的前N个请求(即关闭JIT )。

优化构建中的缺省值是N=11,所以如果您要运行12次请求,第12次会快得多。

您可以使用配置选项对其进行调优,例如:-v Eval.JitWarmupRequests=3。如果您将其设置为0,您将立即看到加速。

这样做有几个原因。

首先,它防止了瞬时预热效应影响JIT编译的代码。

例如,前几个请求可能需要在APC中填充值,这将导致应用程序代码沿着与稳定状态路径不同的路径运行。这样,我们就不会在只会使用几次的JIT编译上浪费空间。

其次,它允许HHVM收集分析信息,以改进未来的编译。

例如,如果我们观察到某个值99%的时间是整数,我们可以编译针对整数情况进行优化的代码。我们目前还没有在启用概要分析的情况下对代码进行JIT编译的功能(最困难的部分是一旦我们完成它,就可以安全地丢弃它),所以我们在仅解释器模式下进行数据收集。

票数 101
EN

Stack Overflow用户

发布于 2015-03-19 20:32:28

我也有同样的性能问题,只有在/etc/hhvm/php.ini中注释了这些行之后,我才能得到令人印象深刻的结果

代码语言:javascript
复制
;hhvm.log.level = Warning
;hhvm.log.always_log_unhandled_exceptions = true
;hhvm.log.runtime_error_reporting_level = 8191
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17898783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档