今天在写迁移脚本时候,发现脚本执行时间花了太多时间了。最后定位到时再往一个数组中添加新数组的过程中消耗了很多时间。
在调试过程中,发现在处理小数据的时候,用PHP自带的函数比如array_merge的性能与直接开辟空间的方法处理速度相当,但是当数据上去了之后,直接开辟空间的方法的优势就显示出来了。所以在操作小数据时候,为了代码简洁可以直接使用PHP自带的函数。
现在我们来测试下:
array_merge测试:
时间列表(时间保存小数点10位)
开辟空间方式:
测试数据时间和前面一样。
现在我把测试数据添加到20000,他们测试时间如下,array_merge花费的时间比直接开辟空间的方式多。
由此可见大数据时候推荐使用直接开辟空间方式,小数据时候用户自带函数。
note:当前面的source数据越来越大时候array_merge每次合并数组的时候,花费的时间开销成倍数增长。(我测试时候在一万以内每秒处理一千多个,达到一万以上速度一下子就慢下来了,每秒只能处理几十个数组,直接开辟空间处理速度还是没有发生变化)