PHP array_push() 与 $arr[]=$value 性能比较

学习笔记 马富天 2016-11-18 11:42:35 156 0

【摘要】本文介绍PHP array_push() 与 $arr[]=$value 性能比较

Note: 如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。

1.array_push方法

array_push 方法,将一个或多个元素压入数组的末尾。

  1. int array_push ( array &$array , mixed $var [, mixed $... ] )

array_push() 将array当成一个栈,并将传入的变量压入array的末尾。array的长度将根据入栈变量的数目增加。 与下效果相同:

  1. $arr[] = $value;

2.在仅仅添加一个元素的情况下,比较 array_push 与 $arr[]=$value 性能

分别使用 array_push 和 $arr[] = $value 对 $arr进行存储 1000000 个元素:

  1. $arr = array();
  2. $begin = get_microtime();
  3. for($i = 0; $i < 1000000; $i++)
  4. {
  5.     array_push($arr,$i);
  6. }
  7. $end = get_microtime();
  8. var_dump($end -$begin);
  9. $arr = array();
  10. $begin = get_microtime();
  11. for($i = 0; $i < 1000000; $i++)
  12. {
  13.     $arr[] = $i;
  14. }
  15. $end = get_microtime();
  16. var_dump($end -$begin);
  17. function get_microtime()
  18. {
  19.     list($usec,$sec) = explode(" ",microtime());
  20.     return ((float)$sec + (float)$usec);
  21. }

array_push 的执行时间:6.3633639812469 s,而 $arr[] = $value 的执行时间:0.52203011512756 s。由此可见,在仅仅添加一个元素的情况之下,$arr[] = $value 的执行时间要远远低于 array_push 所需的时间。

3.使用 array_push 同时压入多个元素的性能比较,源代码如下:

  1. $arr = array();
  2. $begin = get_microtime();
  3. for($i=0; $i<1000000; $i=$i+50)
  4. {
  5.     array_push($arr, $i,$i+1,$i+2,$i+3,$i+4,$i+5,$i+6,$i+7,$i+8,$i+9,$i+10,
  6.         $i+11,$i+12,$i+13,$i+14,$i+15,$i+16,$i+17,$i+18,$i+19,
  7.         $i+21,$i+22,$i+23,$i+24,$i+25,$i+26,$i+27,$i+28,$i+29,
  8.         $i+31,$i+32,$i+33,$i+34,$i+35,$i+36,$i+37,$i+38,$i+39,
  9.         $i+41,$i+42,$i+43,$i+44,$i+45,$i+46,$i+47,$i+48,$i+49);
  10. }
  11. $end = get_microtime();
  12. var_dump($end -$begin);
  13. $arr = array();
  14. $begin = get_microtime();
  15. for($i = 0; $i < 1000000; $i++)
  16. {
  17.     $arr[] = $i;
  18. }
  19. $end = get_microtime();
  20. var_dump($end -$begin);
  21. function get_microtime()
  22. {
  23.     list($usec,$sec) = explode(" ",microtime());
  24.     return ((float)$sec + (float)$usec);
  25. }

array_push 的执行时间:0.29201579093933 s,而 $arr[] = $value 的执行时间:0.45602583885193 s,由此可见 array_push 的执行速度快。

综上所述,在只压入一个元素的时候使用 $arr[] = $value,当可以同时压入多个元素的时候推荐使用 array_push。

(注:如果是压入一个元素,使用$arr[]=$value效率高,因为可以节省调用函数的额外负担。如果同时压入多个元素,使用array_push效率高,因为不用重复获取文件尾的指针。)

版权归 马富天PHP博客 所有

本文标题:《PHP array_push() 与 $arr[]=$value 性能比较》

本文链接地址:http://www.mafutian.net/229.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 磁盘空间不足导致的 mysql 无法启动 》 下一篇《 php 性能优化:使用 isset() 判断字符串长度速度比 strlen() 更快 》

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多