PHP 最快循环修改数组

默认分类 PHP

以前就一直听说foreach最快,所以也一直再用这个循环数组,用起来确实不错,今天就做个性能比较.

目标

创建一个数组(三百万个元素),给数组内的每个元素末尾加字符串"...";

开始测试

for

有一定的局限性,数组的key必须是从零开始的连续数字

代码如图:

for.png

运行三次结果为
0.3869891166687
0.32546901702881
0.34614610671997

0.38621401786804
0.31786894798279
0.34128379821777

0.38577580451965
0.31955981254578
0.34966516494751

array_map

这个函数多用来同时循环多个数组,并执行回调函数返回元素组成的新数组,所以循环修改单个数组并不适合用这个.
代码如下

map.png

运行三次结果为
2.1073980331421
2.7509219646454
2.7619159221649

2.1138532161713
2.7321929931641
2.7346830368042

2.1031608581543
2.7401537895203
2.7383761405945

即便如此,还是很慢

array_walk

以引用传递的形式遍历你的数组
代码如下,也跑三百万

walk.png

运行三次结果为

2.327211856842
2.9339678287506
2.9691359996796

2.3340609073639
2.9385440349579
2.9714319705963

2.3480849266052
2.9503059387207
2.9880568981171

也很慢...

foreach

带key

代码如下

foreach_key.png

跑三次结果
0.40047478675842
0.36870002746582
0.38437604904175

0.40766096115112
0.3668200969696
0.3840229511261

0.40708303451538
0.36531400680542
0.38672804832458

不带key

代码如下

foreach.png

跑三次结果

0.25531601905823
0.16732788085938
0.19288206100464

0.25440788269043
0.16787219047546
0.19229006767273

0.25856399536133
0.16770601272583
0.19120001792908

非常快.

结论

循环数组 foreach还是老大哥.
在不需要用到key值的时候尽量不要带key使用foreach,推荐直接引用修改.(用完别忘了unset一下,防止变量污染);

新评论

称呼不能为空
邮箱格式不合法
网站格式不合法
内容不能为空