3v4l.org

run code in 300+ PHP versions simultaneously
<?php function benchmark(callable ...$functions): void { $times = array_combine(array_keys($functions), array_fill(0, count($functions), 0.0)); $baseTime = 0.0; $baseCallable = fn() => null; $start = hrtime(true); $count = 0; while (hrtime(true) < $start + 1e9) { $startCall = hrtime(true); $baseCallable(); $baseTime += hrtime(true) - $startCall; foreach ($functions as $key => $function) { $startCall = hrtime(true); $function(); $times[$key] += hrtime(true) - $startCall; } $count++; } foreach ($times as $key => $time) { $times[$key] = $time - $baseTime; } if ($count < 100) { echo "Methods too low. Iterated only {$count} times\n"; } asort($times); echo "Benchmark results after {$count} iterations in nanoseconds:\n"; foreach ($times as $key => $time) { echo $key . ': ' . $time . "\n"; } } enum OptionEnum: string { case Option1 = 'opt1'; case Option2 = 'opt2'; case Option3 = 'opt3'; case Option4 = 'opt4'; case Option5 = 'opt5'; public static function values(): array { return ['opt1', 'opt2', 'opt3', 'opt4', 'opt5']; } public static function valuesArrayMap(): array { return array_map(static fn(self $c) => $c->value, self::cases()); } public static function valuesArrayColumn(): array { return array_column(self::cases(), 'value'); } } benchmark( arrayRaw: fn() => OptionEnum::values(), arrayMap: fn() => OptionEnum::valuesArrayMap(), arrayCol: fn() => OptionEnum::valuesArrayColumn(), );
Output for 8.4.14
Benchmark results after 1014614 iterations in nanoseconds: arrayRaw: 14143813 arrayCol: 164876373 arrayMap: 359937644
Output for 8.4.13
Benchmark results after 1113136 iterations in nanoseconds: arrayRaw: 21625866 arrayCol: 155379689 arrayMap: 350099288
Output for 8.4.9
Benchmark results after 1165449 iterations in nanoseconds: arrayRaw: 20145717 arrayCol: 161518757 arrayMap: 348646887
Output for 8.3.27
Benchmark results after 1160835 iterations in nanoseconds: arrayRaw: 24538215 arrayCol: 161275942 arrayMap: 334285352
Output for 8.3.26
Benchmark results after 1136686 iterations in nanoseconds: arrayRaw: 24647542 arrayCol: 155309596 arrayMap: 341306346
Output for 8.3.18
Benchmark results after 1135106 iterations in nanoseconds: arrayRaw: 23090789 arrayCol: 157814129 arrayMap: 335386510
Output for 8.3.5
Benchmark results after 1144669 iterations in nanoseconds: arrayRaw: 20169802 arrayCol: 157147933 arrayMap: 338496531

preferences:
46.54 ms | 414 KiB | 5 Q