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


    1.array_push方法

    array_push 方法,将一个或多个元素压入数组的末尾。

    int array_push ( array &$array , mixed $var [, mixed $... ] )
    

     array_push() 将array当成一个栈,并将传入的变量压入array的末尾。array的长度将根据入栈变量的数目增加。 
    与下效果相同:

    <?php
    $arr[] = $value;
    ?>
    

      

     

    2.比较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 ms
    ", ($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 ms
    ", ($endtime-$starttime)*1000);
    
    function get_microtime(){
        list($usec, $sec) = explode(' ', microtime());
        return (float)$usec + (float)$sec;
    }
    ?>
    

      

    执行时间:417.458057 ms

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

    3.同时压入多个元素比较

    使用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 ms
    ", ($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效率高,因为不用重复获取文件尾的指针。

  • 相关阅读:
    Navicat连接MySQL数据库的一些问题与解决方案
    从select机制谈到epoll机制
    关于VS2017提示I/O文件操作函数需要加上_s的解决办法
    LeetCode初级算法(树篇)
    LeetCode初级算法(动态规划+设计问题篇)
    LeetCode初级算法(其他篇)
    Leetcode初级算法(排序和搜索+数学篇)
    Leetcode初级算法(链表篇)
    Leetcode初级算法(字符串篇)
    机器学习之k-近邻算法
  • 原文地址:https://www.cnblogs.com/kevin2016/p/6950130.html
Copyright © 2020-2023  润新知