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>'. PHP_EOL; } $array = range(0, 300000); test('foreach', function ($msg) use ($array) { echo $msg . ' before loop mem: '. mem() .PHP_EOL; foreach ($array as $v) { $b = $v; } echo $msg . ' after loop mem: '. mem() .PHP_EOL; }); test('foreach ref', function ($msg) use ($array) { echo $msg . ' before loop mem: '. mem() .PHP_EOL; foreach ($array as &$v) { $b = $v; } unset($v); echo $msg . ' after loop mem: '. mem() .PHP_EOL; }); test('for', function ($msg) use ($array) { echo $msg . ' before loop mem: '. mem() .PHP_EOL; $so = count($array); for ($i = 0; $i < $so; ++$i) { $b = $array[$i]; } echo $msg . ' after loop mem: '. mem() .PHP_EOL; }); test('while each -> list', function ($msg) use ($array) { echo $msg . ' before loop mem: '. mem() .PHP_EOL; while (list($k, $v) = each($array)) { $b =$v; } echo $msg . ' after loop mem: '. mem() .PHP_EOL; }); echo 'Memory peak: ' . round(memory_get_peak_usage() / 1048576, 3) .PHP_EOL;

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.3.10.1020.07942.17
7.3.00.0600.08342.53
7.2.130.1060.09242.46
7.2.120.0490.09342.05
7.2.110.0500.09442.48
7.2.100.0760.08942.58
7.2.90.0360.09642.65
7.2.80.0380.10042.50
7.2.70.0490.10142.53
7.2.60.0700.08442.46
7.2.50.0540.09242.73
7.2.40.0460.11442.56
7.2.30.0520.09642.59
7.2.20.0500.09542.37
7.2.10.0520.08142.34
7.2.00.0300.08543.33
7.1.250.0550.12841.31
7.1.70.0440.08142.64
7.1.60.0200.11043.18
7.1.50.0280.03541.50
7.1.00.0100.15748.45
7.0.200.5050.08040.66
7.0.140.0030.17748.07
7.0.60.0170.14745.45
7.0.50.0130.10743.19
7.0.40.0170.13338.32
7.0.30.0770.11338.42
7.0.20.0500.12038.45
7.0.10.0070.11738.57
7.0.00.0270.14738.59
5.6.280.0330.10786.04
5.6.210.0430.10785.67
5.6.200.0400.12383.22
5.6.190.0430.09385.30
5.6.180.0330.08085.32
5.6.170.0430.06385.46
5.6.160.0330.10385.18
5.6.150.0300.12383.07
5.6.140.0270.08782.95
5.6.130.0270.09383.14
5.6.120.0200.08086.07
5.6.110.0330.10386.07
5.6.100.0230.14085.93
5.6.90.0370.11786.02
5.6.80.0570.10785.39
5.6.70.5470.07085.36
5.5.350.0700.10085.39
5.5.340.0400.10782.91
5.5.330.0300.08385.19
5.5.320.0430.09085.09
5.5.310.0770.10785.16
5.5.300.0370.12082.95
5.5.290.0330.11782.90
5.5.280.0430.10785.92
5.5.270.0300.12785.80
5.5.260.0200.07085.84
5.5.250.0300.12085.66
5.5.240.0530.11085.24
5.4.450.0770.10784.01
5.4.440.1030.09784.01
5.4.430.0830.12083.97
5.4.420.0630.13084.23
5.4.410.1330.10084.36
5.4.400.1430.12083.81
5.4.390.1270.10383.81
5.4.380.0670.12083.54
5.4.370.0730.09383.57
5.4.360.0500.09083.53
5.4.350.0530.11083.41
5.4.340.0500.12083.57
5.4.320.0270.06577.21
5.4.310.0240.06877.20
5.4.300.0240.08277.21
5.4.290.0220.07477.19
5.4.280.0240.07077.09
5.4.270.0280.07177.09
5.4.260.0400.11377.09
5.4.250.0280.08077.09
5.4.240.0280.07777.07
5.4.230.0290.07177.08
5.4.220.0340.07977.08
5.4.210.0210.07877.08
5.4.200.0220.07377.09
5.4.190.0270.07177.08
5.4.180.0230.07277.08
5.4.170.0410.08777.09
5.4.160.0290.10377.09
5.4.150.0320.09977.08
5.4.140.0400.09476.77
5.4.130.0280.07976.75
5.4.120.0260.07276.71
5.4.110.0320.08076.71
5.4.100.0280.07376.71
5.4.90.0380.12876.71
5.4.80.0270.10276.71
5.4.70.0190.10876.70
5.4.60.0250.09176.71
5.4.50.0300.08276.70
5.4.40.0290.07876.69
5.4.30.0270.06976.69
5.4.20.0260.06776.68
5.4.10.0220.06676.69
5.4.00.0190.07276.18
5.3.290.0220.07276.17
5.3.280.0200.07076.09
5.3.270.0190.08076.11
5.3.260.0320.08076.11
5.3.250.0300.09976.10
5.3.240.0380.09276.10
5.3.230.0250.10476.10
5.3.220.0290.09376.07
5.3.210.0240.07276.06
5.3.200.0280.07076.06
5.3.190.0280.07076.07
5.3.180.0290.08476.06
5.3.170.0290.09476.06
5.3.160.0390.09276.06
5.3.150.0360.11576.07
5.3.140.0370.08776.05
5.3.130.0210.08376.05
5.3.120.0360.08876.05
5.3.110.0190.07876.05
5.3.100.0280.09075.54
5.3.90.0280.10475.52
5.3.80.0270.10175.51
5.3.70.0280.09175.51
5.3.60.0280.08175.49
5.3.50.0240.08475.44
5.3.40.0470.14875.44
5.3.30.0400.15975.41
5.3.20.0250.10575.19
5.3.10.0380.14075.14
5.3.00.0420.14075.13
5.2.170.0090.0479.24
5.2.160.0050.0499.24
5.2.150.0040.0379.23
5.2.140.0070.0429.23
5.2.130.0120.0349.20
5.2.120.0090.0309.19
5.2.110.0070.0369.19
5.2.100.0210.0629.18
5.2.90.0120.0559.18
5.2.80.0170.0589.18
5.2.70.0170.0739.18
5.2.60.0120.0489.14
5.2.50.0180.0729.11
5.2.40.0100.0389.09
5.2.30.0050.0499.06
5.2.20.0090.0399.04
5.2.10.0070.0388.95
5.2.00.0070.0388.82
5.1.60.0110.0418.11
5.1.50.0090.0368.11
5.1.40.0060.0388.08
5.1.30.0050.0418.43
5.1.20.0150.0528.45
5.1.10.0020.0458.18
5.1.00.0080.0528.18
5.0.50.0070.0256.65
5.0.40.0110.0466.51
5.0.30.0090.0666.32
5.0.20.0050.0296.29
5.0.10.0040.0276.27
5.0.00.0040.0386.27
4.4.90.0080.0364.78
4.4.80.0090.0434.75
4.4.70.0080.0434.76
4.4.60.0120.0334.75
4.4.50.0070.0374.77
4.4.40.0020.0334.71
4.4.30.0040.0214.76
4.4.20.0070.0294.85
4.4.10.0100.0454.85
4.4.00.0070.0494.76
4.3.110.0060.0344.67
4.3.100.0110.0414.66
4.3.90.0070.0344.64
4.3.80.0040.0334.58
4.3.70.0040.0214.63
4.3.60.0120.0594.62
4.3.50.0030.0234.63
4.3.40.0070.0334.54
4.3.30.0070.0453.31
4.3.20.0040.0383.29
4.3.10.0050.0343.25
4.3.00.0270.01310.54

preferences:
23.78 ms | 401 KiB | 5 Q