【性能为王】从PHP源码剖析array_keys和array_unique
之前在[译]更快的方式实现PHP数组去重这篇文章里讨论了使用array_flip后再调用array_keys函数替换直接调用array_unique函数实现数组去重性能较好。由于原文没有给出源码分析和测试的结果,导致给读者造成迷惑,在此说声抱歉。为了解开读者的疑惑,笔者承诺了会补上源码的分析,于是花了一些时间去研究PHP的源码,现在此补上详细的说明。
我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。
性能分析
从运行性能上分析,看看下面的测试代码:
$test=array();
for($run=0; $run<10000; $run++)
$test[]=rand(0,100);
$time=microtime(true);
$out = array_unique($test);
$time=microtime(true)-$time;
echo "Array Unique: ".$time."
";
$time=microtime(true);
$out=array_keys(array_flip($test));
$time=microtime(true)-$time;
echo "Keys Flip: ".$time."
";
$time=microtime(true);
$out=array_flip(array_flip($test));
$time=microtime(true)-$time;
echo "Flip Flip: ".$time."
";
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: QString 按固定长度截断重组
- 下一篇: ORACLE查看并修改session和连接最大数
copyright © 2008-2019 亿联网络 版权所有 备案号:粤ICP备14031511号-2