看到同事使用两次array_flip来做array_unique的事,好奇之下查了一下资料
大致的意思是array_flip比array_unique的效率要高(简直是吊打),但是前者并不是后者的替代品——前者仅限于整形和字符型这样可以被转换成int的类型。其实这两种类型基本能覆盖我们大部分的使用场景了。
然后笔者就在笔记本(OS X EI Capitan, i5 2.7GHz, 8G DDR3)上测试了一下:
1 2 3
| Array Unique: 0.00063300132751465 Keys Flip: 0.00059294700622559 Flip Flip: 0.00012087821960449
|
1 2 3
| Array Unique: 0.010995149612427 Keys Flip: 0.0025668144226074 Flip Flip: 0.0011510848999023
|
1 2 3
| Array Unique: 0.15971708297729 Keys Flip: 0.0050117969512939 Flip Flip: 0.0038530826568604
|
1 2 3
| Array Unique: 2.3442339897156 Keys Flip: 0.03787899017334 Flip Flip: 0.045354127883911
|
1 2 3
| Array Unique: 41.93314409256 Keys Flip: 0.40603184700012 Flip Flip: 0.41118502616882
|
查资料,array_flip的时间复杂度是O(n),而array_unique的是O(nlogn)
参考