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%
你这两个程序做的不是一件事。。。if else需要比较几次,但是你那个数组只做了一次运算。。。明显不行。。
还有可以把字符串变成数字型,效率会提高很多。。。
有时候简单的测试是不能够体现什么的。需要有点实际的应用这种类型的测试才能够适用 字符串比较是个算法问题, 和你的字符串复杂程度, 长度都有关系 楼主的比较有失公允吧
你把第一个for循环里面改成
if ($model == "0101") {
//echo "sdf";
}
然后再比较还差不多。。。。
页:
[1]