Home >Backend Development >PHP Tutorial >Performance comparison of php array_push and $arr[]=$value

Performance comparison of php array_push and $arr[]=$value

PHP中文网
PHP中文网Original
2017-06-07 14:34:261447browse

1.array_push method

array_push method, pushes one or more elements to the end of the array.

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

array_push() treats the array as a stack and pushes the passed variables into the end of the array. The length of the array will increase according to the number of variables pushed onto the stack.
The same effect as the following:

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

2. Compare array_push and $arr[]=$value performance

Use array_push to push 1000000 elements

<?php
$starttime = get_microtime();
$arr = array();
for($i=0; $i<1000000; $i++){
    array_push($arr, $i);
}
$endtime = get_microtime();
printf("run time %f ms\r\n", ($endtime-$starttime)*1000);

function get_microtime(){
    list($usec, $sec) = explode(&#39; &#39;, microtime());
    return (float)$usec + (float)$sec;
}
?>

Execution time: 2735.545158 ms

Use $arr[] = $value pushes 100,000 elements

<?php
$starttime = get_microtime();
$arr = array();
for($i=0; $i<1000000; $i++){
    $arr[] = $i;
}
$endtime = get_microtime();
printf("run time %f ms\r\n", ($endtime-$starttime)*1000);

function get_microtime(){
    list($usec, $sec) = explode(&#39; &#39;, microtime());
    return (float)$usec + (float)$sec;
}
?>

Execution time: 417.458057 ms

Result: Each time one element is pushed, using $arr[]=$value is 7 times faster than using the array_push method.

3. Push multiple elements at the same time for comparison

Use array_push method to push 100000 elements, 50 elements each time

<?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\r\n", ($endtime-$starttime)*1000);

function get_microtime(){
    list($usec, $sec) = explode(&#39; &#39;, microtime());
    return (float)$usec + (float)$sec;
}

Execution time: 250.149012 ms

Result: Use array_push to push multiple elements at one time , faster than using $arr[]=$value multiple times to push. The more elements array_push pushes in at one time, the more efficient it is.

Summary:

If you are pushing an element, using $arr[]=$value is efficient because it can save the extra burden of calling functions.
If multiple elements are pushed at the same time, using array_push is more efficient because there is no need to repeatedly obtain the pointer to the end of the file.


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn