本节内容:
PHP 数组key长度对性能的影响
不知道大家是否关注过php编程中,有关数组长度对性能的影响。
例子:
<?php
echo '次 | 长key(ms) | 短key(ms) |'."n";
echo '--------------------------------------'."n";
for($i = 1; $i <= 10; $i++){
echo $i.' | ';
$keyArr = array(
'aaffdggererrer4eaaffdggererrer4e',
'aaffdggererrer4eaaffdggererrer5e',
'aaffdggererrer4eaaffdggererrer6e',
'aaffdggererrer4eaaffdggererrer7e',
'aaffdggererrer4eaaffdggererrer8e',
'aaffdggererrer4eaaffdggererrer9e',
);
$key = $keyArr[rand(0,5)];
$arr1 = array(
'aaffdggererrer4eaaffdggererrer4e' => 1,
'aaffdggererrer4eaaffdggererrer5e' => 1,
'aaffdggererrer4eaaffdggererrer6e' => 1,
'aaffdggererrer4eaaffdggererrer7e' => 1,
'aaffdggererrer4eaaffdggererrer8e' => 1,
'aaffdggererrer4eaaffdggererrer9e' => 1,
); // www.jb200.com
$startTime = microtime_float();
$a = $arr1[$key];
$endTime = microtime_float();
echo ($endTime - $startTime) * 1000;
echo ' | ';
$arr2 = array(
'aaffdggererrer4eaaffdggererrer4e',
'aaffdggererrer4eaaffdggererrer5e',
'aaffdggererrer4eaaffdggererrer6e',
'aaffdggererrer4eaaffdggererrer7e',
'aaffdggererrer4eaaffdggererrer8e',
'aaffdggererrer4eaaffdggererrer9e'
);
$arr3 = array(1,1,1,1,1,1);
$startTime = microtime_float();
foreach($arr2 as $k=>$v){
if ($v == $key){
$a = $arr3[$k];
break;
}
}
$endTime = microtime_float();
echo ($endTime - $startTime) * 1000;
echo "n";
}
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
测试结果:
从以上结果可知,第一次数组查找时,两者相关数量组差异。
在后续查找中,短key要比长key慢。
原因,foreach的性能影响,因此慢了很多。
总结:
1,key的长度对数组查找有明显影响。
2,一维数组比二维数组快。
3,foreach的对性能影响还是比较明显。