@ 2024-03-21T15:27:22Z <?php
function generate($array) { // 1 loop over data
foreach ($array as $v) {
yield 'key' . $v => 'value' . $v;
}
}
function generator($array) { // 1 parent loop over data
return iterator_to_array(generate($array));
}
function construct($array) { // 1 loop over data
$result = [];
foreach ($array as $v) {
$result['key' . $v] = 'value' . $v;
}
return $result;
}
function mapCombine($array) { // 3 loops over data
return array_combine(
array_map(
fn($v) => 'key' . $v,
$array
),
array_map(
fn($v) => 'value' . $v,
$array
),
);
}
function mapFlatten($array) { // 3 loops over data
return array_merge(
...array_map(
fn($v) => ['key' . $v => 'value' . $v],
$array
),
);
}
function mapUncolumn($array) { // 2 loops over data
return array_column(
array_map(
fn($v) => ['key' . $v, 'value' . $v],
$array
),
1,
0
);
}
function walk($array) { // 1 loop over data
$result = [];
array_walk(
$array,
function($v) use (&$result) {
$result['key' . $v] = 'value' . $v;
}
);
return $result;
}
function reduce($array) { // 1 loop over data
return array_reduce(
$array,
function($result, $v) {
$result['key' . $v] = 'value' . $v;
return $result;
},
new ArrayObject()
);
}
function returnTime(callable $function, int $repeat = 20)
{
$tests = [];
for ($i = 0; $i < $repeat; ++$i) {
$startTime = microtime(true);
$function();
$endTime = microtime(true);
$tests[] = $endTime - $startTime;
}
// Representing the average
return 1000 * array_sum($tests) / $repeat;
}
$array = range(0, 5000);
foreach (['generator', 'construct', 'mapCombine', 'mapFlatten', 'mapUncolumn', 'walk', 'reduce'] as $test) {
echo "Duration of $test: ", returnTime(fn() => $test($array)) . PHP_EOL;
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.3.4 0.013 0.157 23.58 8.3.3 0.015 0.153 22.90 8.3.2 0.015 0.151 25.67 8.3.1 0.018 0.164 25.71 8.3.0 0.018 0.156 22.75 8.2.17 0.012 0.156 22.88 8.2.16 0.013 0.156 24.02 8.2.15 0.010 0.146 23.17 8.2.14 0.013 0.169 24.29 8.2.13 0.018 0.160 24.50 8.2.12 0.018 0.155 23.30 8.2.11 0.017 0.157 23.20 8.2.10 0.015 0.161 23.29 8.2.9 0.020 0.138 22.82 8.2.8 0.010 0.173 23.15 8.2.7 0.017 0.146 22.81 8.2.6 0.018 0.156 22.86 8.2.5 0.015 0.145 23.03 8.2.4 0.023 0.145 22.84 8.2.3 0.015 0.139 22.72 8.2.2 0.015 0.149 22.66 8.2.1 0.017 0.152 22.64 8.2.0 0.005 0.151 22.83 8.1.27 0.013 0.153 25.81 8.1.26 0.007 0.164 25.72 8.1.25 0.012 0.147 25.84 8.1.24 0.022 0.141 22.24 8.1.23 0.017 0.157 22.11 8.1.22 0.012 0.154 22.53 8.1.21 0.018 0.145 22.28 8.1.20 0.018 0.168 22.43 8.1.19 0.007 0.148 22.35 8.1.18 0.010 0.148 22.31 8.1.17 0.013 0.137 22.33 8.1.16 0.018 0.158 22.13 8.1.15 0.010 0.149 22.25 8.1.14 0.012 0.157 22.40 8.1.13 0.007 0.145 22.52 8.1.12 0.017 0.150 22.21 8.1.11 0.020 0.158 22.06 8.1.10 0.020 0.142 23.40 8.1.9 0.018 0.160 22.13 8.1.8 0.020 0.146 23.29 8.1.7 0.020 0.133 22.40 8.1.6 0.020 0.153 22.34 8.1.5 0.015 0.159 22.15 8.1.4 0.015 0.153 22.33 8.1.3 0.023 0.159 22.61 8.1.2 0.018 0.149 23.71 8.1.1 0.012 0.152 22.17 8.1.0 0.017 0.153 22.10
preferences:dark mode live preview ace vim emacs key bindings
27.09 ms | 403 KiB | 5 Q