hoowa 发表于 2013-12-12 12:01

PHP下哪种判断方式性能更好

本帖最后由 hoowa 于 2013-12-12 12:06 编辑

这个测试的目的是做性能测试,可能很多人觉得CPU够强大不用测试了。 不过我的运行环境是嵌入式,而且是MIPS架构的性能可没有手机那么强。<?php

$model = "0101";

$start_time = gettimeofday(true);
for ($i=0;$i<10000;$i++)
{
    if ($model == "0110") {
    } elseif ($model == "0111") {
    } elseif ($model == "0101") {
      //echo "sdf";
    }
}
$end_time = gettimeofday(true);

echo "round $i used: ".($end_time-$start_time)." sec\n";

?>

<?php

$model = array();
$model['0110']=true;
$model['0101']=true;
$model['0111']=true;

$select = "0101";

$start_time = gettimeofday(true);
for ($i=0;$i<10000;$i++)
{
    if (isset($model[$select])) {
    }
}
$end_time = gettimeofday(true);

echo "round $i used: ".($end_time-$start_time)." sec\n";

?>
一万次测试:
A round 10000 used: 0.107144 sec
B round 10000 used: 0.0212110000002 sec

一次测试:
A 0.000103999999737 sec
B 8.39999997879E-5 sec

一百万次:
A round 100000 used: 1.061187 sec
B round 100000 used: 0.211976 sec

证明在PHP中使用第二种方式作为判断性能怎么样都比多条if快很多.在多次访问的时候可以差别到5倍。 另外发现测试的时候,使用第二种方法的CPU占用率只有第一种方法的30%

yc8332 发表于 2013-12-13 10:51

你这两个程序做的不是一件事。。。if else需要比较几次,但是你那个数组只做了一次运算。。。明显不行。。
还有可以把字符串变成数字型,效率会提高很多。。。

baopbird2005 发表于 2013-12-13 15:40

有时候简单的测试是不能够体现什么的。需要有点实际的应用这种类型的测试才能够适用

bs 发表于 2013-12-24 18:29

字符串比较是个算法问题,   和你的字符串复杂程度, 长度都有关系

除美灭日平韩 发表于 2014-01-15 10:54

楼主的比较有失公允吧

你把第一个for循环里面改成


if ($model == "0101") {
      //echo "sdf";
    }

然后再比较还差不多。。。。
页: [1]
查看完整版本: PHP下哪种判断方式性能更好