PHP 数组key长度对性能的影响实例分析

发布时间:2020-07-27编辑:脚本学堂
本文分析下,在php编程中,数组key键的长度对性能的影响,有需要的朋友可以作个参考。

本节内容:
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);
}
 

测试结果:
 

复制代码 代码示例:
$ php test.php
次  |  长key(ms)  |  短key(ms)  |
--------------------------------------
1  |  0.015974044799805  |  0.0090599060058594
2  |  0.0019073486328125  |  0.0040531158447266
3  |  0.0021457672119141  |  0.0028610229492188
4  |  0.0019073486328125  |  0.0030994415283203
5  |  0.0019073486328125  |  0.0030994415283203
6  |  0.0019073486328125  |  0.0028610229492188
7  |  0.0019073486328125  |  0.0028610229492188
8  |  0.0019073486328125  |  0.0028610229492188
9  |  0.0019073486328125  |  0.0028610229492188
10  |  0.0019073486328125  |  0.0021457672119141
 

从以上结果可知,第一次数组查找时,两者相关数量组差异。
在后续查找中,短key要比长key慢。

原因,foreach的性能影响,因此慢了很多。

总结:
1,key的长度对数组查找有明显影响。
2,一维数组比二维数组快。
3,foreach的对性能影响还是比较明显。