169it科技资讯


当前位置:  编程技术>php

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

    来源: 互联网  发布时间:2014-10-13

本节内容:
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.

 $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的对性能影响还是比较明显。


    
相关技术文章:
    ▪php函数指定默认值的方法示例

     本节内容: php函数指定默认值 在php编程中,为自定义函数设定默认值,当用户调用该函数时,如果不给参数指定值,参数会用默认值顶替。 例1,   代码示例: <html> <head> <title>php函数指定默认值-www.</title> </head> <body> <?php function printMe($param = NULL) {    print $param; } printMe("This is test"); printMe(); ?>   </body> </html> 输出结果: This is test 例2,php函数参数默认值的使用范例,php函数参数中设置和使......


    ▪php提交表单到当前页面、提交表单后页面重定向的实例代码

     本节内容: php提交表单到当前页面、提交表单后页面重定向的例子。 例2,通过$_PHP_SELF变量表示当前页面。 通过将表单的action设置为$_PHP_SELF变量将表单信息提交到当前页面。   代码示例: <?php   if( $_POST["name"] || $_POST["age"] )   {      echo "Welcome ". $_POST['name']. "<br />";      echo "You are ". $_POST['age']. " years old.";      exit();   } ?> <html> <body>   <form action="<?php $_PHP_SELF ?>" method="POST">   Name: <input type="text" name="name" />   Age: &l......


    ▪php四舍五入的三种实现方法

     本节内容: php四舍五入的三种方法。 本文介绍的四舍五入方法,分别通过number_format函数、round函数和sprintf格式化输出的方法来实现。 例1,number_format 方法实现四舍五入   代码示例: $number = 1234.5678; $nombre_format_francais = number_format($number, 2, ',', ' '); // 1 234,57 www. $english_format_number = number_format($number, 2, '.', ''); // 1234.57 例2,round方法实现四舍五入   代码示例: $number = 1234.5678; echo round($number ,2);  //1234.57 例3......


 
最新技术文章:
    ▪PHP函数microtime()时间戳的定义与用法

     本节内容: PHP函数microtime() 定义和用法 microtime()返回当前 Unix 时间戳和微秒数。 microtime()语法 microtime(get_as_float) microtime()参数与描述 get_as_float 如果给出了 get_as_float 参数并且其值等价于 TRUE,该函数将返回一个浮点数。 说明 microtime()仅在支持 gettimeofday() 系统调用的操作系统下可用。 如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。 例子:   代码示例......


    ▪PHP单一入口之apache配置内容

     本节内容: PHP单一入口 在apache配置文件httpd.conf加入,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的“#”号。 内容:   代码示例: DocumentRoot / <Directory />     Options Indexes FollowSymLinks MultiViews     AllowOverride None     #AllowOverride All <IfModule mod_rewrite.c>   RewriteEngine on   RewriteBase /   #不显示index.php   RewriteCond %{REQUEST_FILENAME} !-d   RewriteCond %{REQUEST_FILENAME} !-f   RewriteRule  ^/?(.*)$ /index.php?%{QUERY_STRING} [L,NC]   #RewriteRule ^(.*)$ index.php?$1 [QSA,L]  </IfM......


    ▪PHP数组排序方法总结(收藏)

     本节内容: 快速创建数组的函数range()和常见PHP数组排序的方法。   本文主要介绍php数组排序、降序的排序相关的内容。   sort:本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。 rsort:本函数对数组进行逆向排序(最高到最低)。 删除原有的键名而不仅是重新排序。 asort:对数组进行排序并保持索引关系 arsort:对数组进行逆向排序并保持索引关系 ksort:对数组按照键名排序,保留键名到数据的关联 krsort:对数组按照键名逆向排序,保留键名到数据的关联 natsort:对字母数字......


 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号