PHP 最快循环修改数组

2021-05-29T12:31:00

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

目标

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

开始测试

for

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

代码如图:

运行三次结果为
0.3869891166687
0.32546901702881
0.34614610671997

0.38621401786804
0.31786894798279
0.34128379821777

0.38577580451965
0.31955981254578
0.34966516494751

array_map

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

运行三次结果为
2.1073980331421
2.7509219646454
2.7619159221649

2.1138532161713
2.7321929931641
2.7346830368042

2.1031608581543
2.7401537895203
2.7383761405945

即便如此,还是很慢

array_walk

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

运行三次结果为

2.327211856842
2.9339678287506
2.9691359996796

2.3340609073639
2.9385440349579
2.9714319705963

2.3480849266052
2.9503059387207
2.9880568981171

也很慢...

foreach

带key

代码如下

跑三次结果
0.40047478675842
0.36870002746582
0.38437604904175

0.40766096115112
0.3668200969696
0.3840229511261

0.40708303451538
0.36531400680542
0.38672804832458

不带key

代码如下

跑三次结果

0.25531601905823
0.16732788085938
0.19288206100464

0.25440788269043
0.16787219047546
0.19229006767273

0.25856399536133
0.16770601272583
0.19120001792908

非常快.

结论

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

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »