首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助理解一个粗略的基准:常规PHP对HHVM和Zephir

需要帮助理解一个粗略的基准:常规PHP对HHVM和Zephir
EN

Stack Overflow用户
提问于 2014-03-07 20:05:40
回答 1查看 1.6K关注 0票数 3

我使用一个简单的阶乘函数(借用了http://avelino.xxx/2014/03/golang-c-and-python-the-benchmark-time的逻辑)来执行这个测试。

正则PHP代码

代码语言:javascript
复制
function fact($n){ 
    if($n===0)return 1;
    return $n*fact($n-1);
}

function calc(){
    $t = 0;
    for($i=0; $i<100000; $i++){
        for($j=0; $j<8; $j++){
            $t += fact($j);
        }
    }
    return $t; 
}

$result = calc();
echo $result."\n";

使用Zephir的PHP

代码语言:javascript
复制
$fact = new Utils\Fact();
$result = $fact->calc();
echo $result."\n";

Zephir码

代码语言:javascript
复制
namespace Utils;

class Fact{
    public function fact(int n) -> int{
        if(n==0){
            return 1;
        }

        return n*this->fact(n - 1);
    }

    public function calc() -> int{
        int i,j,total;
        let total = 0;
        for i in range(0,99999){
            for j in range (0,7){
                let total = total + this->fact(j);
            }
        }
        return total;
    }
}

我使用time命令以下列方式执行这些代码段:

正则PHP

代码语言:javascript
复制
time php -c /etc/php5/apache2/php.ini regular.php

结果

代码语言:javascript
复制
591400000
real 0m0.788s
user 0m0.736s
sys 0m0.026s

使用Zephir类

代码语言:javascript
复制
time php -c /etc/php5/apache2/php.ini zephyr.php

结果

代码语言:javascript
复制
591400000
real 0m1.529s
user 0m1.494s
sys 0m0.024s

HHVM

代码语言:javascript
复制
time hhvm regular.php

结果

代码语言:javascript
复制
591400000
real 0m0.883s
user 0m0.814s
sys 0m0.045s

问题:

从上面的结果可以看出,常规PHP代码似乎比使用已编译的Zephyr类作为PHP扩展的代码执行得更好。这就是我所困惑的。

如何使脚本代码比编译的代码更快,特别是当两者使用相同的逻辑时?我想我漏掉了一些东西,如果有人能帮我理解这件事,我会很感激的。

编辑:看起来其他人也面临着与Zephir:Zephir 2x慢速类似的问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-07 23:08:29

我不知道zephyr,但是HHVM是一个JIT,所以您需要支付额外的启动成本,这样以后的运行就会更快。尝试增加您的基准,以便它需要1分钟或10分钟,如果您想要真正看到HHVM执行。

另外,在某些情况下,我们决定在命令行模式下不打开JIT,所以使用-vEval.Jit=true强制它继续。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22259688

复制
相关文章

相似问题

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