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, 30000000); 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.0040.00716.05
7.3.00.0060.00316.02
7.2.130.0100.00716.08
7.2.120.0080.00416.67
7.2.110.0000.00916.38
7.2.100.0000.01216.37
7.2.90.0070.00716.26
7.2.80.0030.00916.35
7.2.70.0030.00616.45
7.2.60.0030.00916.57
7.2.50.0000.01116.45
7.2.40.0040.00816.69
7.2.30.0090.00316.68
7.2.20.0080.00016.32
7.2.10.0000.01516.56
7.2.00.0120.00917.63
7.1.250.0000.00915.83
7.1.70.0040.00417.10
7.1.60.0110.01419.40
7.1.50.0100.00716.50
7.1.00.0030.05722.42
7.0.200.0000.00816.52
7.0.140.0100.06322.16
7.0.120.0070.07021.96
7.0.60.0070.08020.05
7.0.50.0070.08017.71
7.0.40.0030.05017.72
7.0.30.0100.07317.73
7.0.20.0100.05717.85
7.0.10.0100.04717.80
7.0.00.0100.04317.86
5.6.280.0400.09385.78
5.6.210.0170.07385.37
5.6.200.0470.13782.83
5.6.190.0400.11382.80
5.6.180.0300.11782.66
5.6.170.0230.08382.78
5.6.160.0430.11782.86
5.6.150.0300.12782.78
5.6.140.0370.08782.89
5.6.130.0170.08082.75
5.6.120.0330.12082.80
5.6.110.0230.11082.79
5.6.100.0330.11382.87
5.6.90.0230.11382.80
5.6.80.0170.07082.04
5.6.70.0430.08382.20
5.6.60.0570.06382.22
5.6.50.0400.11782.19
5.6.40.0200.11782.01
5.6.30.0430.10382.14
5.6.20.0300.09082.25
5.6.10.0370.12382.23
5.6.00.0270.06382.14
5.5.350.0300.11785.19
5.5.340.0300.11782.63
5.5.330.0330.10382.66
5.5.320.0230.07382.44
5.5.310.0170.09382.61
5.5.300.0300.12382.64
5.5.290.0300.12382.63
5.5.280.0300.06782.61
5.5.270.0270.07382.60
5.5.260.0170.13082.60
5.5.250.0300.11782.44
5.5.240.0200.09381.96
5.5.230.0070.10081.98
5.5.220.0170.13781.95
5.5.210.0400.10381.98
5.5.200.0330.10381.94
5.5.190.0270.12381.94
5.5.180.0400.08381.91
5.5.160.0370.10381.90
5.5.150.0230.12781.96
5.5.140.0170.09081.96
5.5.130.0430.10781.96
5.5.120.0070.10081.92
5.5.110.0270.06381.94
5.5.100.0370.10781.87
5.5.90.0230.10381.90
5.5.80.0230.10081.95
5.5.70.0330.09081.87
5.5.60.0300.11781.81
5.5.50.0230.08081.70
5.5.40.0270.10081.85
5.5.30.0370.10781.68
5.5.20.0170.13081.94
5.5.10.0170.13081.69
5.5.00.0330.11081.83
5.4.450.0600.127148.84
5.4.440.0530.160148.79
5.4.430.0430.113148.90
5.4.420.0470.090148.79
5.4.410.0570.103148.66
5.4.400.0600.137148.70
5.4.390.0370.137148.49
5.4.380.0500.140148.51
5.4.370.0370.153148.63
5.4.360.0570.140148.46
5.4.350.0300.163148.61
5.4.340.0470.160148.40
5.4.320.0600.140148.69
5.4.310.0470.090148.55
5.4.300.0430.140148.48
5.4.290.0370.107148.57
5.4.280.0470.150148.53
5.4.270.0370.100148.37
5.4.260.0730.120148.54
5.4.250.0500.143148.46
5.4.240.0330.143148.63
5.4.230.0300.150148.68
5.4.220.0500.150148.55
5.4.210.0400.137148.49
5.4.200.0430.107148.57
5.4.190.0400.097148.52
5.4.180.0630.133148.37
5.4.170.0470.150148.37
5.4.160.0500.120148.67
5.4.150.0470.123148.50
5.4.140.0630.090145.78
5.4.130.0430.150145.96
5.4.120.0270.170145.94
5.4.110.0270.113146.02
5.4.100.0470.147145.96
5.4.90.0500.147146.01
5.4.80.0400.117145.91
5.4.70.0300.100145.90
5.4.60.0430.090145.91
5.4.50.0230.110145.93
5.4.40.0670.063145.85
5.4.30.0400.090146.02
5.4.20.0430.087145.93
5.4.10.0430.090145.87
5.4.00.0430.087145.31
5.3.290.0630.130141.77
5.3.280.0400.153141.64
5.3.270.0370.170141.66
5.3.260.0500.160141.65
5.3.250.0500.157141.70
5.3.240.0730.130141.80
5.3.230.0430.147141.69
5.3.220.0500.083141.64
5.3.210.0400.160141.69
5.3.200.0670.103141.62
5.3.190.0270.150141.65
5.3.180.0230.117141.64
5.3.170.0330.107141.55
5.3.160.0200.110141.66
5.3.150.0830.087141.69
5.3.140.0370.097141.66
5.3.130.0500.083141.61
5.3.120.0730.093141.65
5.3.110.0430.090141.56
5.3.100.0500.117141.05
5.3.90.0330.113141.05
5.3.80.0470.087141.00
5.3.70.0230.107141.06
5.3.60.0370.100141.00
5.3.50.0330.100140.95
5.3.40.0370.097140.98
5.3.30.0400.090140.86
5.3.20.0500.087140.78
5.3.10.0400.090140.68
5.3.00.0300.133140.65
5.2.170.0030.03011.16
5.2.160.0030.02711.22
5.2.150.0030.03311.22
5.2.140.0000.03011.19
5.2.130.0030.02711.12
5.2.120.0030.02711.32
5.2.110.0030.02711.16
5.2.100.0070.02311.16
5.2.90.0000.03011.11
5.2.80.0070.03311.11
5.2.70.0000.03011.17
5.2.60.0030.04711.02
5.2.50.0030.02710.99
5.2.40.0030.03310.97
5.2.30.0070.03010.98
5.2.20.0000.05710.98
5.2.10.0000.04710.86
5.2.00.0070.03010.72
5.1.60.0000.05710.08
5.1.50.0030.0409.99
5.1.40.0070.05310.02
5.1.30.0000.06310.33
5.1.20.0000.03010.21
5.1.10.0000.0279.91
5.1.00.0030.02710.05
5.0.50.0030.0438.60
5.0.40.0000.0308.40
5.0.30.0000.0638.33
5.0.20.0030.0478.25
5.0.10.0030.0278.23
5.0.00.0070.0608.22
4.4.90.0000.0207.54
4.4.80.0000.0207.54
4.4.70.0000.0207.54
4.4.60.0030.0137.54
4.4.50.0000.0277.54
4.4.40.0030.0337.54
4.4.30.0030.0177.54
4.4.20.0030.0337.54
4.4.10.0030.0137.54
4.4.00.0030.0537.54
4.3.110.0000.0407.54
4.3.100.0000.0337.54
4.3.90.0070.0237.54
4.3.80.0000.0507.54
4.3.70.0000.0237.54
4.3.60.0030.0177.54
4.3.50.0000.0177.54
4.3.40.0070.0507.54
4.3.30.0000.0407.54
4.3.20.0000.0177.54
4.3.10.0000.0337.54
4.3.00.0000.0337.54

preferences:
35.24 ms | 401 KiB | 5 Q