3v4l.org

run code in 300+ PHP versions simultaneously
<?php function bytesToSize($bytes, $precision = 2) { $symbols = array('B', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb'); $exp = (int)floor(log($bytes) / log(1024)); return sprintf('%.'. $precision .'f '. $symbols[$exp], $bytes / pow(1024, floor($exp))); } function mem() { return bytesToSize(memory_get_usage(true)); } function test($msg, $test) { $t = microtime(true); $test($msg); echo $msg .': <b>'. sprintf('%.6f', microtime(true) - $t) .'</b><br>'; } $array = range(0, 3000000); test('foreach', function ($msg) use ($array) { echo $msg . ' before loop mem: '. mem() .'<br>'; foreach ($array as $v) { $b = $v; } echo $msg . ' after loop mem: '. mem() .'<br>'; }); test('foreach ref', function ($msg) use ($array) { echo $msg . ' before loop mem: '. mem() .'<br>'; foreach ($array as &$v) { $b = $v; } unset($v); echo $msg . ' after loop mem: '. mem() .'<br>'; }); test('for', function ($msg) use ($array) { echo $msg . ' before loop mem: '. mem() .'<br>'; $so = count($array); for ($i = 0; $i < $so; ++$i) { $b = $array[$i]; } echo $msg . ' after loop mem: '. mem() .'<br>'; }); test('while each -> list', function ($msg) use ($array) { echo $msg . ' before loop mem: '. mem() .'<br>'; while (list($k, $v) = each($array)) { $b =$v; } echo $msg . ' after loop mem: '. mem() .'<br>'; });

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)
7.1.70.0030.00317.07
7.1.60.0150.00619.43
7.1.50.0070.01016.68
7.1.00.0000.03722.36
7.0.200.0000.00716.63
7.0.140.0070.06722.00
7.0.100.0030.06320.03
7.0.90.0070.08319.86
7.0.80.0130.07719.91
7.0.70.0100.06019.92
7.0.60.0070.08019.96
7.0.50.0070.05720.42
7.0.40.0100.08319.99
7.0.30.0100.07720.08
7.0.20.0170.08020.15
7.0.10.0100.08020.04
7.0.00.0070.08720.18
5.6.280.0200.12085.58
5.6.250.0230.11785.26
5.6.240.0330.12785.29
5.6.230.0170.13085.29
5.6.220.0270.08385.31
5.6.210.0370.08785.10
5.6.200.0200.10385.78
5.6.190.0370.12085.72
5.6.180.0230.12385.80
5.6.170.0270.11785.68
5.6.160.0300.11785.80
5.6.150.0330.12085.75
5.6.140.0330.12085.80
5.6.130.0370.10385.76
5.6.120.0330.09385.71
5.6.110.0400.11385.70
5.6.100.0330.12085.66
5.6.90.0400.10385.58
5.6.80.0270.11085.16
5.6.70.0430.10085.00
5.6.60.0200.07785.05
5.6.50.0330.06785.00
5.6.40.0230.06785.07
5.6.30.0230.07385.06
5.6.20.0300.07785.10
5.6.10.0170.07084.95
5.6.00.0300.10084.99
5.5.380.0400.11785.11
5.5.370.0430.12085.11
5.5.360.0430.11384.98
5.5.350.0170.13785.08
5.5.340.0270.11385.47
5.5.330.0330.10785.58
5.5.320.0370.11785.53
5.5.310.0170.07785.59
5.5.300.0330.11085.58
5.5.290.0230.07385.49
5.5.280.0330.11785.29
5.5.270.0430.11785.58
5.5.260.0330.08085.48
5.5.250.0200.11785.35
5.5.240.0330.10784.91
5.5.230.0270.06384.78
5.5.220.0130.07384.84
5.5.210.0130.08784.83
5.5.200.0270.07384.88
5.5.190.0200.07084.64
5.5.180.0330.08784.91
5.5.160.0200.07084.77
5.5.150.0270.07784.89
5.5.140.0170.07384.92
5.5.130.0130.07784.84
5.5.120.0270.07384.93
5.5.110.0300.09784.83
5.5.100.0200.07784.79
5.5.90.0100.08084.67
5.5.80.0270.06784.75
5.5.70.0200.07084.75
5.5.60.0270.06784.75
5.5.50.0200.06784.77
5.5.40.0170.07084.81
5.5.30.0200.09784.71
5.5.20.0200.08784.73
5.5.10.0100.08084.62
5.5.00.0200.07384.68
5.4.450.0230.11083.88
5.4.440.0430.08783.95
5.4.430.0300.10383.94
5.4.420.0330.07383.79
5.4.410.0230.11383.97
5.4.400.0300.11383.68
5.4.390.0330.08083.49
5.4.380.0230.09083.72
5.4.370.0270.06083.62
5.4.360.0170.08083.71
5.4.350.0170.07383.54
5.4.340.0200.06783.63
5.4.320.0230.06383.63
5.4.310.0130.11383.55
5.4.300.0300.09783.50
5.4.290.0230.08383.64
5.4.280.0330.06083.80
5.4.270.0270.06383.43
5.4.260.0270.06083.64
5.4.250.0130.07383.64
5.4.240.0330.07783.64
5.4.230.0130.07383.62
5.4.220.0130.06383.46
5.4.210.0130.06083.69
5.4.200.0330.05383.63
5.4.190.0100.07383.64
5.4.180.0100.07783.44
5.4.170.0230.06783.80
5.4.160.0230.09383.43
5.4.150.0270.10783.69
5.4.140.0230.11380.99
5.4.130.0300.10780.88
5.4.120.0330.09381.02
5.4.110.0200.11080.95
5.4.100.0330.10781.05
5.4.90.0300.11781.09
5.4.80.0300.11780.89
5.4.70.0230.06381.11
5.4.60.0330.11081.05
5.4.50.0330.11781.04
5.4.40.0270.08381.03
5.4.30.0270.11780.95
5.4.20.0170.10781.08
5.4.10.0330.11380.89
5.4.00.0370.08380.38
5.3.290.0130.10077.90
5.3.280.0230.07077.80
5.3.270.0230.06077.80
5.3.260.0230.07777.82
5.3.250.0200.09777.88
5.3.240.0400.09377.89
5.3.230.0330.11377.79
5.3.220.0370.10377.88
5.3.210.0200.06777.73
5.3.200.0130.12777.78
5.3.190.0170.09077.80
5.3.180.0330.10077.76
5.3.170.0270.10777.80
5.3.160.0400.09377.69
5.3.150.0330.07777.73
5.3.140.0200.12077.74
5.3.130.0200.10377.64
5.3.120.0230.06777.68
5.3.110.0270.11777.73
5.3.100.0370.11077.20
5.3.90.0430.08377.13
5.3.80.0200.12777.13
5.3.70.0330.11077.21
5.3.60.0200.09077.22
5.3.50.0370.07077.14
5.3.40.0430.10377.07
5.3.30.0370.08777.13
5.3.20.0330.10376.76
5.3.10.0270.12376.85
5.3.00.0270.10076.77
5.2.170.0070.03311.29
5.2.160.0070.06011.14
5.2.150.0070.05311.26
5.2.140.0070.05311.16
5.2.130.0070.06011.25
5.2.120.0100.06011.00
5.2.110.0030.06711.01
5.2.100.0030.03011.02
5.2.90.0070.03711.21
5.2.80.0070.05711.22
5.2.70.0000.06711.15
5.2.60.0000.06711.21
5.2.50.0030.06311.05
5.2.40.0070.05311.04
5.2.30.0100.06011.10
5.2.20.0000.04710.92
5.2.10.0030.06310.93
5.2.00.0030.06010.65
5.1.60.0030.05010.65
5.1.50.0030.05310.65
5.1.40.0100.05010.65
5.1.30.0100.05710.65
5.1.20.0170.04310.65
5.1.10.0070.05710.65
5.1.00.0070.05310.65
5.0.50.0070.04010.65
5.0.40.0070.04010.65
5.0.30.0030.05310.65
5.0.20.0030.03710.65
5.0.10.0100.03710.65
5.0.00.0030.06310.65
4.4.90.0030.03710.65
4.4.80.0030.03310.65
4.4.70.0000.03710.65
4.4.60.0000.02010.65
4.4.50.0000.03310.65
4.4.40.0000.05710.65
4.4.30.0070.03310.65
4.4.20.0000.04010.65
4.4.10.0070.03310.65
4.4.00.0070.05310.65
4.3.110.0000.03310.65
4.3.100.0070.03010.65
4.3.90.0030.03310.65
4.3.80.0000.05310.65
4.3.70.0000.03710.65
4.3.60.0030.03010.65
4.3.50.0030.03010.65
4.3.40.0000.05010.65
4.3.30.0030.02710.65
4.3.20.0030.03010.65
4.3.10.0070.02310.65
4.3.00.0030.03310.65

preferences:
35.19 ms | 401 KiB | 5 Q