php增加数组元素各方法效率比较

SJY发表于:2018年03月11日 12:14 • 阅读:

$array=array();
for($i = 0; $i < 100000; $i ++) {
        array_push($array, $i);        
}

耗时 0.25~0.28

把array_push改成数组的字面量表示法试试

$array[]=$i;

耗时 0.03~0.05

这就是差距,相同的结果,效率根本不是一个层次上的,以后别用array_push了

再来试试给数组头部添加元素

array_unshift($array, $i);

等了半天没有反应,不过想想也是,它每添加一个元素,都要把现有元素往下移一个位置。据说JavaScript中unshift比push要慢差不多100倍,我想PHP也应该差不多吧。

那就在 array_push 压入新元素后,再翻转下

$array=array();
for($i = 0; $i < 100000; $i ++) {        
        array_push($array, $i);
}
$array=array_reverse($array);

耗时 0.26~0.28发现 array_reverse 几乎没消耗什么资源,数组翻转后跟array_unshift效果差不多,当然原数组的顺序也翻转了,一般不影响使用。

既然可以翻转,最有效的方法应该如下

$array=array();
for($i = 0; $i < 100000; $i ++) {        
        $array[]=$i;
}
$array=array_reverse($array);

耗时 0.03~0.06

那么还有没有比array_reverse 效率更高的方法呢

给出定义好的数组

$arr=array('a','b','c','d','e','f','g');

效率比较

array_reverse

for($i = 0; $i < 100000; $i ++) {
        array_reverse($arr);
}
//耗时0.25

位运算

for($i = 0; $i < 100000; $i ++) {
        $arr[0]=$arr[0] ^ $arr[6];
        $arr[6]=$arr[0] ^ $arr[6];
        $arr[0]=$arr[0] ^ $arr[6];        
}
//耗时0.05

显然,位运算能达到同样的效果,速度快的多了。

位运算方法来自:http://tieba.baidu.com/p/2309604274

欢迎转载,但请保留原文地址 http://www.sjyhome.com/php/1291.html

标签: PHP性能优化

回复(0)