array_unshift的性能问题

 最近在看php的源码, 看数组这一块的时候发现了一个事情, 分享一下. 

这个array_unshift函数平时使用也不是太多, 所以平时可能没太在意. 先看下源码. 

这里显示array_unshift时,会创建一个新的数组, 把参数中的插入后再把原数组的数据接在后面. 也就是每unshift一个元素, 整个数组都要移动一遍, 这样的效率是很低的. 我们来测试一下, 验证我们的猜想. 

样本数据是1~10000一万条数据, 因为array_unshift写10W的时候根本跑不完. 

array_unshift 0.447秒

array_push 0.008秒

数组语法$b[] 0.001秒.

array_push 比 array_unshift快50倍

而php语法的数组追加比array_push快8倍. 

如果以后要操作数组, 尽量往后面追加而不要往前面插入. 如果非要从前面插入那需要控制调用次数, 比方说我们可以一次调用传多个元素的方式来减少数组的拷贝. 也可以先把数组array_reverse掉头, 再[]追加. 



文章来自: 本站原创
Tags:
评论: 0 | 查看次数: 40639