本文主要是介绍php array_map,for,foreach性能测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
array array_map ( callback
$callback
, array $arr1
[, array $...
] )
是php自带的使用回调函数的数组批处理函数,看到这类函数的结构我就怀疑其处理效率。做了个小测试
$a[0]['id'] = 1;
$a[0]['name'] = "a";
$a[1]['id'] = 2;
$a[1]['name'] = "b";
$a[2]['id'] = 3;
$a[2]['name'] = "c";
$a[3]['id'] = 3;
$a[3]['name'] = "c";
$a[4]['id'] = 3;
$a[4]['name'] = "c";
$a[5]['id'] = 3;
$a[5]['name'] = "c";
$a[6]['id'] = 3;
$a[6]['name'] = "c";
$a[7]['id'] = 3;
$a[7]['name'] = "c";
$a[8]['id'] = 3;
$a[8]['name'] = "c";
$a[9]['id'] = 3;
$a[9]['name'] = "c";
$a[10]['id'] = 3;
$a[10]['name'] = "c";
function _map($x){$x['cid'] = "abc";return $x;
}$t1 = microtime(true);//方案1:自己创建回调函数,在mvc框架中,这类回调函数的调用很不方便,单独一个函数放在什么地方是个问题,所以首先想到用类似js的闭包。实际效率最低;平均58us
//$a = array_map(create_function('$x','$x["cid"] = "abc";return $x;'),$a); //方案2:使用回调函数;平均30us
//$a = array_map('_map',$a);//方案3:直接foreach遍历;平均20us
//foreach($a as $k=>$v) {
// $a[$k]['cid'] = "abc";
//}//方案4:使用for循环;平均15us
for($i=0;$i<count($a);$i++){ $a[$i]['cid'] = "abc";
}$t2 = microtime(true);echo pow(10,4)*$t2 - pow(10,4)*$t1;
echo "<br>";
echo ($t2-$t1)*pow(10,6);
print_r("<pre>");
print_r ($a);
print_r("</pre>");
方案 | 测试方法 | 微秒数 |
---|---|---|
1 | array_map+create_function | 58 |
2 | array_map | 30 |
3 | foreach | 20 |
4 | for | 15 |
这篇关于php array_map,for,foreach性能测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!