最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • php中array_push 与 $arr[]=$value 性能比较分析

    本文简要分析一下php中array_push与$arr[] = $value两种将元素加入数组末尾的方法的性能,以便在不同的场景中能够更好的使用相应的方式去处理问题。

    1. array_push方法

    array_push 方法,将一个或多个元素压入数组的末尾。array_push() 将array当成一个栈,并将传入的变量压入array的末尾。array的长度将根据入栈变量的数目增加。

    int array_push ( array &$array , mixed $var [, mixed $… ] )
     
    2. $arr[] = $value; 方法

    给数组增加一个值,使用效果和array_push是相同的。

    比较 array_push 与 $arr[]=$value 的性能

    使用array_push压入1000000个元素

    <?php
    $starttime = get_microtime();
    $arr = array();
    for ($i = 0;$i < 1000000;$i++) {
        array_push($arr, $i);
    }
    $endtime = get_microtime();
    printf("run time %f msrn", ($endtime - $starttime) * 1000);
    function get_microtime() {
        list($usec, $sec) = explode(' ', microtime());
        return (float)$usec + (float)$sec;
    }

    执行时间:2735.545158 ms

    使用$arr[] = $value压入100000个元素

    <?php
    $starttime = get_microtime();
    $arr = array();
    for($i=0; $i<1000000; $i++){
        $arr[] = $i;
    }
    $endtime = get_microtime();
    printf("run time %f msrn", ($endtime-$starttime)*1000);
    
    function get_microtime(){
        list($usec, $sec) = explode(' ', microtime());
        return (float)$usec + (float)$sec;
    }

    执行时间:417.458057 ms

    结果:每次压入一个元素,使用$arr[]=$value比使用array_push方法快7倍。 

    同时压入多个元素的性能比较

    使用array_push方法,压入100000个元素,每次压入50个元素

    <?php
    $starttime = get_microtime();
    $arr = array();
    for ($i = 0;$i < 1000000;$i = $i + 50) {
        array_push($arr, $i, $i + 1, $i + 2, $i + 3, $i + 4, $i + 5, $i + 6, $i + 7, $i + 8, $i + 9, $i + 10, $i + 11, $i + 12, $i + 13, $i + 14, $i + 15, $i + 16, $i + 17, $i + 18, $i + 19, $i + 21, $i + 22, $i + 23, $i + 24, $i + 25, $i + 26, $i + 27, $i + 28, $i + 29, $i + 31, $i + 32, $i + 33, $i + 34, $i + 35, $i + 36, $i + 37, $i + 38, $i + 39, $i + 41, $i + 42, $i + 43, $i + 44, $i + 45, $i + 46, $i + 47, $i + 48, $i + 49);
    }
    $endtime = get_microtime();
    printf("run time %f msrn", ($endtime - $starttime) * 1000);
    function get_microtime() {
        list($usec, $sec) = explode(' ', microtime());
        return (float)$usec + (float)$sec;
    }

    执行时间:250.149012 ms

    结果:使用array_push一次压入多个元素,比多次使用$arr[]=$value压入快。array_push一次压入的元素越多,效率越高。 

    总结:

    如果是压入一个元素,使用$arr[]=$value效率高,因为可以节省调用函数的额外负担。 

    如果同时压入多个元素,使用array_push效率高,因为不用重复获取文件尾的指针。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » php中array_push 与 $arr[]=$value 性能比较分析
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情