- microtime: documentation ( source)
- array_merge: documentation ( source)
<?php
function merger($array1, $array2) {
$result = array_merge($array1, $array2);
}
function spreader($array1, $array2) {
$result = [...$array1, ...$array2];
}
function uniter($array1, $array2) {
$result = $array1 + $array2;
}
$array1 = [];
$key = 'a';
for ($i = 0; $i < 500; ++$i) {
$array1[++$key] = $i;
}
$array2 = [];
for ($i = 500; $i < 1000; ++$i) {
$array2[++$key] = $i;
}
$runs = 1000;
// array_merge in loop
$t0 = microtime(true);
for ($i = 0; $i < $runs; ++$i) {
merger($array1, $array2);
}
$tMerge = microtime(true);
echo "merge: " . ($tMerge - $t0) . PHP_EOL;
// array_merge with spread operator
$t1 = microtime(true);
for ($i = 0; $i < $runs; ++$i) {
spreader($array1, $array2);
}
$tSpread = microtime(true);
echo "spread: " . ($tSpread - $t1) . PHP_EOL;
// union operator
$t2 = microtime(true);
for ($i = 0; $i < $runs; ++$i) {
uniter($array1, $array2);
}
$tUnion = microtime(true);
echo "union: " . ($tUnion - $t2);