3v4l.org

run code in 300+ PHP versions simultaneously
<?php function generator($array, $prefix) { foreach ($array as $k => $v) { yield $prefix . $k => $v; } } function generatorPrefix($array, $prefix = 'prefix') { return iterator_to_array(generator($array, $prefix)); } function constructPrefix($array, $prefix = 'prefix') { // 1 loop over data $result = []; foreach ($array as $k => $v) { $result[$prefix . $k] = $v; } return $result; } function mapKeyAndCombinePrefix($array, $prefix = 'prefix') { // 3 loops over data return array_combine( array_map( fn($k) => $prefix . $k, array_keys($array) ), $array ); } function walkPrefix($array, $prefix = 'prefix') { // 1 loop over data $result = []; array_walk( $array, function($v, $k, $prefix) use (&$result) { $result[$prefix . $k] = $v; }, $prefix ); return $result; } function reducePrefix($array, $prefix = 'prefix') { // 2 loops over data return array_reduce( array_keys($array), function($result, $k) use ($array, $prefix) { $result[$prefix . $k] = $array[$k]; return $result; }, [] ); } 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 (['generatorPrefix', 'constructPrefix', 'mapKeyAndCombinePrefix', 'walkPrefix', 'reducePrefix'] as $test) { echo "Duration of $test: ", returnTime(fn() => $test($array)) . PHP_EOL; }

preferences:
32.01 ms | 402 KiB | 5 Q