3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface BarInterface{} function getMemoryUsage($size){ static $unit=['b','kb','mb','gb','tb','pb']; return $size > 0 ? @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i] : 0 . ' byte'; } class Bar implements BarInterface { } class Foo { public function variadic(\BarInterface ...$bars){} public function iterated(array $bars){} } $bars = []; for ($i=0; $i<10000 ;$i++) { $bars[] = new \Bar(); } $foo = new Foo(); $items = \count($bars); //initial call to reduce overhead $foo->variadic(...[]); $foo->iterated([]); microtime(true); memory_get_usage(true); //benchmark start $mem_start = memory_get_usage(true); $start = new \DateTime(); $foo->variadic(...$bars); $mem_variadic = memory_get_usage(true); $variadic = new \DateTime(); $variadicDiff = $start->diff($variadic)->format('%f'); printf('%sms (variadic passed %d %s increase)', $variadicDiff, $items, getMemoryUsage($mem_variadic-$mem_start)); echo \PHP_EOL . '--------' . \PHP_EOL; $mem_start = memory_get_usage(true); $start = new \DateTime(); $foo->iterated($bars); $mem_iterated = memory_get_usage(true); $iterated = new \DateTime(); $iteratedDiff = $start->diff($iterated)->format('%f'); printf('%sms (iterated passed %d %s increase)', $iteratedDiff, $items, getMemoryUsage($mem_iterated-$mem_start)); echo \PHP_EOL . '--------' . \PHP_EOL; if ($variadicDiff > $iteratedDiff) { $loser = 'Variadic'; $diff = $variadicDiff - $iteratedDiff; $loss = $diff / $iteratedDiff; } else { $loser = 'Iterated'; $diff = $iteratedDiff - $variadicDiff; $loss = $diff / $variadicDiff; } printf('%s was slower by %.2f%% (%d ms)', $loser, $loss * 100, $diff);

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).

VersionSystem time (s)User time (s)Memory (MiB)
8.1.40.0090.00719.38
8.0.170.0100.00518.74
7.4.00.0070.01416.79
7.3.120.0070.01416.62
7.3.110.0060.01616.65
7.3.100.0060.01316.61
7.3.90.0050.01216.71
7.3.80.0110.00716.65
7.3.70.0100.00516.65
7.3.60.0050.01016.63
7.3.50.0060.00916.66
7.3.40.0090.00716.57
7.3.30.0050.01216.67
7.3.20.0110.00618.14
7.3.10.0070.01118.20
7.3.00.0090.01018.17
7.2.250.0090.01317.22
7.2.240.0120.01017.00
7.2.230.0030.01517.20
7.2.220.0060.00917.15
7.2.210.0080.00916.92
7.2.200.0100.00817.12
7.2.190.0100.00917.04
7.2.180.0040.01317.16
7.2.170.0070.00916.89
7.2.160.0100.01117.08
7.2.150.0060.01418.08
7.2.140.0120.01118.09
7.2.130.0080.01518.19
7.2.120.0120.01117.99
7.2.110.0440.01018.04
7.2.100.0100.01418.07
7.2.90.0130.01018.29
7.2.80.0150.00517.94
7.2.70.0090.01118.29
7.2.60.0130.01018.16
7.2.50.0100.01018.18
7.2.40.0080.00818.18
7.2.30.0080.01617.96
7.2.20.0120.00918.19
7.2.10.0080.01218.21
7.2.00.0090.01018.14
7.1.330.0060.01418.15
7.1.320.0020.01518.12
7.1.310.0100.00518.25
7.1.300.0050.01118.01
7.1.290.0060.00918.29
7.1.280.0120.00917.45
7.1.270.0100.00917.61
7.1.260.0110.00917.48
7.1.250.0130.00817.00
7.1.240.0110.00718.07
7.1.230.0130.00318.15
7.1.220.0060.01018.13
7.1.210.0060.01318.10
7.1.200.0100.00717.98
7.1.190.0070.01318.08
7.1.180.0060.01018.27
7.1.170.0030.01617.86
7.1.160.0060.01318.11
7.1.150.0090.00918.18
7.1.140.0090.00918.18
7.1.130.0070.01018.12
7.1.120.0110.00617.90
7.1.110.0110.01118.22
7.1.100.0060.01218.05
7.1.90.0060.01318.34
7.1.80.0030.01318.31
7.1.70.0030.01417.79
7.1.60.0030.01418.33
7.1.50.0090.00918.30
7.1.40.0070.00718.08
7.1.30.0000.01418.20
7.1.20.0030.01318.27
7.1.10.0000.01518.00
7.1.00.0100.01017.83

preferences:
52.14 ms | 401 KiB | 5 Q