用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5461|回复: 1
收起左侧

[优化] 关于in_array() foreach array_search() 的性能对比

[复制链接]
发表于 2011-11-8 16:33:07 | 显示全部楼层 |阅读模式
对于这几个函数,都可以用于判断某字符是否存在于数组中,群里有人在问,所以做了一个简单的测试。
请看代码。

PHP复制代码
 
<?php
/*
 *Powered by ciogao@gmail.com  QQ 285305740
 */

echo '结论:<br>in_array与array_search效率几乎相同,in_array仅返回真伪,array_search同时返回位置.<br>foreach性能最差<br>';
$runtime= new runtime;
$runtime->start();
 
        $a = 'k';
        $b = array('a','b','c','d','e','f','g','h','i','j','k');
 
/*
for ($i=0; $i < 100000; $i++) {
        var_dump(in_array($a, $b));        
}
*/

 
/*
for ($i=0; $i < 100000; $i++) {
        foreach ($b as $key => $value) {
                if ($a == $value) {
                        //echo TRUE;
                        continue;
                }
        }
}
*/

 
 
/*
for ($i=0; $i < 100000; $i++) {
        array_search($a, $b);
}
 *
 */

 
$runtime->stop();
echo $_b;
echo "页面执行时间: ".$runtime->spent()." 毫秒";
 
class runtime
{
    var $StartTime = 0;
    var $StopTime = 0;
    function get_microtime()
    {
        list($usec, $sec) = explode(' ', microtime());
        return ((float)$usec + (float)$sec);
    }
 
    function start()
    {
        $this->StartTime = $this->get_microtime();
    }
 
    function stop()
    {
        $this->StopTime = $this->get_microtime();
    }
 
    function spent()
    {
        return round(($this->StopTime - $this->StartTime) * 1000, 1);
    }
}
?>
 
复制代码


in_array():
foreach():
array_search():
发表于 2011-11-8 16:36:06 | 显示全部楼层
一般内置函数效率都比较高点的吧。

本版积分规则