Performance of array_shift and array_pop in PHP
We have confirmed that array_shift is much slower than array_pop in PHP.
Code:
<?// Create an array with 100000 elements
$array = array(); for ($i = 0; $i < 100000; $i++) { $array[] = rand(); }
// Remove the last 1000 elements using array_pop
$start = microtime(true); for ($i = 0; $i < 1000; $i++) { array_pop($array); } $stop = microtime(true); printf(“array_pop takes %.5f seconds\n”, $stop – $start);
// Add back 1000 elements
for ($i = 0; $i < 1000; $i++) { $array[] = rand(); }
// Remove the first 1000 elements using array_shift
$start = microtime(true); for ($i = 0; $i < 1000; $i++) { array_shift($array); } $stop = microtime(true); printf(“array_shift takes %.5f seconds\n”, $stop – $start);
// Add back 1000 elements
for ($i = 0; $i < 1000; $i++) { $array[] = rand(); }
// Remove the first 1000 elements by reversing the array and popping 1000 elements
$start = microtime(true); $array_rev = array_reverse($array); for ($i = 0; $i < 1000; $i++) { array_pop($array_rev); } $stop = microtime(true); printf(“array_reverse + array_pop takes %.5f seconds\n”, $stop – $start);
?>
Result:
array_pop takes 0.00089 seconds array_shift takes 15.15544 seconds array_reverse + array_pop takes 0.03934 seconds
