php - 如何使用 HHVM 改善较差的阵列性能?

标签 php hhvm

我正在尝试对 php 5.5 与 HHVM 进行一些基准测试,并使用 hhvm 获得了一些相当不错的结果。然而,冒泡排序在 HHVM 上的性能非常糟糕。我猜它与数组有关。在下面的示例中,当 q=1000 时,hhvm 几乎比 php 5.5 差 5 倍。因为在这两种情况下,因为测试运行了很多次,所以我认为预热时间不应该是一个问题。在这两种情况下,它们都是 fastcgi 模式。在 q=1000 的情况下,php5.5 需要大约 200 毫秒来为页面提供服务,而 hhvm 则需要将近 1000 毫秒。我尝试使用 splfixedclass,但它在 hhvm 上的性能也很差。是否有特殊类或一些特殊选项可以提高 hhvm 中的数组性能?

我在这里解释了我到底做了什么: http://letschat.info/php-5-5-vs-hhvm-vs-node-js-benchmark-part-2/

$starttime = microtime(true);

if($_GET['q']!=""){
 $count = $_GET['q'];
} else {
  $count = 100;

}

function  getRandom(){
        $random = array();
        global $count;

        for($i=0;$i<$count;$i++){
                $random[]=rand(1,100);
        }
        return $random;
}

$array = getRandom();

for($i=0;$i<10;$i++) {
        #$i=0;
        //while ($i<$a) {

        $a = count($array);
        $b=$a-1;

        for($j=0; $j < $a; $j++){
                for ($k=0;$k<$b;$k++) {
                        if ($array[$k+1] < $array[$k]) {
                                $t = $array[$k];
                                $array[$k] = $array[$k+1];
                                $array[$k+1] = $t;
                        }
                }

                //++$i;
        }
        $array[$count/2]=rand(1,100);

}
print_r($array);
echo microtime(true) - $starttime;

最佳答案

一个问题和一个可能的问题:

  • 将所有代码放在一个函数中。我们不 JIT 伪主程序(主体中的代码)。
  • 在 Web 请求中运行代码,或者如果您正在执行命令行,请使用 -v Eval.Jit=true。我们禁用脚本的 JITting,因为它们通常不会运行很长时间,而且预热成本高于运行时成本。

.

function main() {
  // Do everything
}
main();

关于php - 如何使用 HHVM 改善较差的阵列性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859304/

相关文章:

php - Codeigniter 3应用程序: update MySQL table column and the corresponding view through Ajax

php - 意外的文件结尾错误-删除功能修复了问题

php - SQL PHP : Select virtual column if exists in another table

redirect - HHVM - 为干净的 URL 重写规则

php - 如何在 hacklang/hhvm 中使用 Mysql PDO 驱动程序

php - mysql 查询 SELECT 不适用于返回单个值

php - 解析 swf/fla(使用 php?)

hhvm - HHVM 配置文件的位置

hhvm - Nuclide IDE 和使用 Watchman 进行远程服务器设置

nginx - 对具有 HHVM 的站点使用单独的池