3v4l.org

run code in 300+ PHP versions simultaneously
<?php class ValueEncoder { public function encode($value) { $result = urlencode($value); return $result; } } class ValueDecoder { public function decode($value) { $result = urldecode($value); return $result; } } class RefEncoder { public function encode(&$value) { $value = urlencode($value); } } class RefDecoder { public function decode(&$value) { $value = urldecode($value); } } function genData() { return str_repeat('test', 2000000); } function valueTranscode() { $data = genData(); $encoder = new ValueEncoder(); $decoder = new ValueDecoder(); $data = $encoder->encode($data); $data = $decoder->decode($data); $data = strlen($data); } function refTranscode() { $data = genData(); $encoder = new RefEncoder(); $decoder = new RefDecoder(); $encoder->encode($data); $decoder->decode($data); $data = strlen($data); } $isRef = isset($argv[1]) && 'ref' === $argv[1]; echo ($isRef ? 'Ref: ' : 'Value: '); $s = microtime(true); for ($i = 0; $i < 20; ++$i) { if ($isRef) { refTranscode(); } else { valueTranscode(); } } $d = microtime(true) - $s; echo number_format($d, 2) . ' s, '; #echo number_format(memory_get_peak_usage(true)/1000/1000,2) . ' MB'. PHP_EOL; echo (!$isRef ? 'Ref: ' : 'Value: '); $s = microtime(true); for ($i = 0; $i < 20; ++$i) { if (!$isRef) { refTranscode(); } else { valueTranscode(); } } $d = microtime(true) - $s; echo number_format($d, 2) . ' s, ';

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.5991.01532.04
7.3.00.9260.99532.06
7.2.130.7701.00932.22
7.2.120.8750.95632.03
7.2.110.4240.59232.26
7.2.101.0280.95232.17
7.2.90.4310.27932.21
7.2.81.0160.85232.52
7.2.70.4200.65732.42
7.2.60.5820.77531.85
7.2.50.0310.01213.74
7.2.41.1830.63532.36
7.2.30.3530.32232.02
7.2.20.8341.01132.42
7.2.10.6270.78832.04
7.2.00.3461.04533.55
7.1.250.5821.02131.34
7.1.70.0901.11932.45
7.1.60.1001.02632.88
7.1.50.1170.97032.74
7.1.00.0801.11737.86
7.0.201.3671.10232.59
7.0.140.0771.10737.68
7.0.101.2000.94735.23
7.0.91.2700.82735.23
7.0.81.1730.96035.17
7.0.71.0570.89335.19
7.0.61.1430.91035.05
7.0.51.6630.83735.59
7.0.41.3470.88035.31
7.0.31.6530.82735.27
7.0.21.2630.86335.37
7.0.10.9430.87735.34
7.0.00.9670.84335.40
5.6.250.0071.02043.71
5.6.240.0200.92043.59
5.6.230.0130.95743.52
5.6.220.0131.02043.48
5.6.210.0200.99343.46
5.6.200.0301.05344.00
5.6.190.0130.94343.96
5.6.180.0371.00744.09
5.6.170.0270.96343.86
5.6.160.0100.97744.05
5.6.150.0030.84744.02
5.6.140.0200.84044.05
5.6.130.0301.00044.00
5.6.120.0130.99343.90
5.6.110.0231.01743.95
5.6.100.0201.01043.95
5.6.90.0030.99343.93
5.6.80.0171.00743.37
5.6.70.0171.01743.24
5.6.60.0230.99043.41
5.6.50.0130.94343.32
5.6.40.0101.03343.30
5.6.30.0170.98343.31
5.6.20.0101.12043.28
5.6.10.0271.03743.21
5.6.00.0201.03343.38
5.5.380.0101.02343.36
5.5.370.0201.10343.45
5.5.360.0170.95043.34
5.5.350.0200.93743.27
5.5.340.0271.07043.83
5.5.330.0231.04343.77
5.5.320.0270.94043.82
5.5.310.0201.00043.79
5.5.300.0130.83343.74
5.5.290.0131.03343.78
5.5.280.0171.01743.71
5.5.270.0201.05743.68
5.5.260.0201.02743.82
5.5.250.0131.02043.55
5.5.240.0130.95743.04
5.5.230.0230.89043.17
5.5.220.0271.03743.05
5.5.210.0171.00743.06
5.5.200.0171.08043.04
5.5.190.0101.05343.18
5.5.180.0101.01343.16
5.5.160.0170.99043.17
5.5.150.0371.00343.18
5.5.140.0201.02343.04
5.5.130.0070.87043.05
5.5.120.0130.88343.06
5.5.110.0130.89043.03
5.5.100.0070.88042.96
5.5.90.0201.05742.98
5.5.80.0100.99742.92
5.5.70.0200.98343.03
5.5.60.0170.89743.02
5.5.50.0171.06043.05
5.5.40.0131.05742.99
5.5.30.0271.06042.98
5.5.20.0071.04043.02
5.5.10.0130.94743.02
5.5.00.0301.00342.86
5.4.450.0071.04342.48
5.4.440.0071.07342.36
5.4.430.0131.00742.49
5.4.420.0171.04042.42
5.4.410.0231.01042.24
5.4.400.0230.99742.01
5.4.390.0270.99041.97
5.4.380.0231.01742.21
5.4.370.0201.07742.05
5.4.360.0131.02342.11
5.4.350.0231.02741.88
5.4.340.0171.05042.01
5.4.320.0231.01042.09
5.4.310.0171.00742.09
5.4.300.0031.04342.00
5.4.290.0030.91741.92
5.4.280.0201.01341.88
5.4.270.0100.83742.02
5.4.260.0300.83741.93
5.4.250.0970.95042.04
5.4.240.0171.04042.09
5.4.230.0200.99742.11
5.4.220.0231.02041.82
5.4.210.0170.95042.02
5.4.200.0131.04341.82
5.4.190.0171.07041.84
5.4.180.0170.97342.13
5.4.170.0201.08042.20
5.4.160.0100.95042.00
5.4.150.0131.01041.90
5.4.140.0231.03739.44
5.4.130.0270.99339.45
5.4.120.0200.96339.43
5.4.110.0271.03339.38
5.4.100.0170.93039.38
5.4.90.0171.03339.50
5.4.80.0171.01339.45
5.4.70.0331.03339.38
5.4.60.0230.98739.51
5.4.50.0171.09039.50
5.4.40.0070.95339.42
5.4.30.0030.88739.38
5.4.20.0030.89739.34
5.4.10.0130.90039.20
5.4.00.0170.89038.72
5.3.290.0130.89037.74
5.3.280.0230.84737.66
5.3.270.0330.88037.68
5.3.260.0270.88037.68
5.3.250.0070.77737.60
5.3.240.0130.88337.61
5.3.230.0170.88737.67
5.3.220.0100.96337.64
5.3.210.0130.83037.62
5.3.200.0400.85337.64
5.3.190.0300.82737.63
5.3.180.0130.84337.54
5.3.170.0171.10037.63
5.3.160.0270.86337.63
5.3.150.0170.82737.64
5.3.140.0231.15737.51
5.3.130.0330.83037.59
5.3.120.0200.86037.63
5.3.110.0130.87737.61
5.3.100.0230.82037.06
5.3.90.0170.67037.00
5.3.80.0270.79737.08
5.3.70.0100.71036.99
5.3.60.0170.85736.95
5.3.50.0170.85737.01
5.3.40.0200.67344.44
5.3.30.0170.84336.88
5.3.20.0230.85736.65
5.3.10.0370.87336.65
5.3.00.0200.83336.70
5.2.170.0170.84734.27
5.2.160.0300.82734.04
5.2.150.0170.90734.13
5.2.140.0100.86734.20
5.2.130.0200.80034.10
5.2.120.0170.77034.26
5.2.110.0100.85034.31
5.2.100.0170.74734.23
5.2.90.0200.85334.03
5.2.80.0130.83034.13
5.2.70.0200.85034.07
5.2.60.0130.85334.11
5.2.50.0100.86034.18
5.2.40.0130.70334.03
5.2.30.0270.81334.16
5.2.20.0030.68033.95
5.2.10.0170.92733.87
5.2.00.0130.80333.74
5.1.60.0170.85333.13
5.1.50.0030.80332.89
5.1.40.0170.83033.09
5.1.30.0170.82733.50
5.1.20.0200.84733.35
5.1.10.0030.85733.20
5.1.00.0100.78348.29
5.0.50.0100.86731.70
5.0.40.0030.83331.54
5.0.30.0101.03731.33
5.0.20.0170.80331.29
5.0.10.0070.78731.16
5.0.00.0200.95031.05
4.4.90.0000.03711.59
4.4.80.0030.03011.59
4.4.70.0070.03311.59
4.4.60.0030.03311.59
4.4.50.0030.03311.59
4.4.40.0030.03011.59
4.4.30.0030.02011.59
4.4.20.0070.03011.59
4.4.10.0000.03011.59
4.4.00.0030.02011.59
4.3.110.0000.01711.59
4.3.100.0070.03011.59
4.3.90.0000.01711.59
4.3.80.0000.04711.59
4.3.70.0000.03011.59
4.3.60.0000.01711.59
4.3.50.0000.03711.59
4.3.40.0030.05011.59
4.3.30.0030.02711.59
4.3.20.0000.02711.59
4.3.10.0030.02711.59
4.3.00.0000.03311.59

preferences:
33.03 ms | 401 KiB | 5 Q