3v4l.org

run code in 300+ PHP versions simultaneously
<?php function gdr_encode($val) { $bin = ''; while ($val > 0) { $bin .= chr($val & 0xFF); $val >>= 8; } return str_replace(array('/', '='), array('_', ''), base64_encode($bin)); } function gdr_decode($str) { $bin = base64_decode(str_replace('_', '/', $str)); $val = 0; for ($i=strlen($bin)-1; $i>=0; $i--) { $val |= ord($bin[$i]) << $i*8; } return $val; } function test_enc($val) { $enc = gdr_encode($val); $dec = gdr_decode($enc); if ($val === $dec) { echo "$enc $val\n"; } else { echo "$enc $valĀ ERROR: gdr_decode($enc) == $dec\n"; } } foreach (array(0, 1, 99, 100, 255, 256, 999, 1000, 9999, 10000) as $val) { test_enc($val); } echo "\n"; // seed rng for consistent values if (phpversion() < '5.2.1') { die('old rng'); } mt_srand(42); for ($i=0; $i<63; $i++) { $val = 1<<$i; $val += mt_rand(0, $val/2); test_enc($val); }

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.0090.00617.18
7.1.60.0100.01419.40
7.1.50.0030.02017.14
7.1.00.0000.08022.37
7.0.200.0030.00516.55
7.0.140.0070.07322.21
7.0.60.0100.08319.93
7.0.50.0130.03317.88
7.0.40.0100.08320.18
7.0.30.0230.04720.06
7.0.20.0230.08020.30
7.0.10.0100.07020.16
7.0.00.0030.04320.10
5.6.280.0070.07020.93
5.6.210.0070.07320.48
5.6.200.0100.04318.13
5.6.190.0100.08720.61
5.6.180.0100.07720.50
5.6.170.0270.07720.57
5.6.160.0100.04720.50
5.6.150.0070.05718.23
5.6.140.0000.05018.30
5.6.130.0100.08018.19
5.6.120.0100.07021.02
5.6.110.0200.07321.11
5.6.100.0200.05021.11
5.6.90.0130.05021.13
5.6.80.0070.08320.54
5.5.350.0230.07020.48
5.5.340.0030.04317.99
5.5.330.0100.08320.42
5.5.320.0130.04020.25
5.5.310.0300.05720.34
5.5.300.0070.06017.95
5.5.290.0100.04318.05
5.5.280.0070.05320.97
5.5.270.0070.06720.87
5.5.260.0030.05020.77
5.5.250.0130.08020.48
5.5.240.0000.05320.30
5.4.450.0730.05019.31
5.4.440.0530.07719.55
5.4.430.0830.05319.51
5.4.420.0130.05019.68
5.4.410.0670.05719.08
5.4.400.0330.05718.84
5.4.390.0300.06018.73
5.4.380.0070.06018.61
5.4.370.0070.05018.61
5.4.360.0170.04718.56
5.4.350.0090.04712.03
5.4.340.0030.04012.02
5.4.320.0060.03912.50
5.4.310.0050.03912.50
5.4.300.0020.04112.51
5.4.290.0050.04012.51
5.4.280.0090.03612.40
5.4.270.0070.05112.40
5.4.260.0080.05312.41
5.4.250.0050.04212.40
5.4.240.0050.05512.40
5.4.230.0050.04212.39
5.4.220.0080.04112.39
5.4.210.0050.03912.40
5.4.200.0070.03812.39
5.4.190.0030.04012.39
5.4.180.0090.03812.39
5.4.170.0140.05012.40
5.4.160.0120.04612.39
5.4.150.0080.04912.39
5.4.140.0100.04912.07
5.4.130.0080.04612.06
5.4.120.0070.03412.02
5.4.110.0070.03712.02
5.4.100.0050.03912.02
5.4.90.0060.04112.02
5.4.80.0060.04612.02
5.4.70.0040.03812.02
5.4.60.0070.03412.01
5.4.50.0080.03412.02
5.4.40.0090.03312.00
5.4.30.0080.03412.00
5.4.20.0050.03712.00
5.4.10.0090.03212.00
5.4.00.0070.03611.48
5.3.290.0070.04412.80
5.3.280.0060.03812.71
5.3.270.0100.04312.72
5.3.260.0050.04112.72
5.3.250.0080.03612.72
5.3.240.0070.03712.72
5.3.230.0040.04012.71
5.3.220.0060.03812.68
5.3.210.0070.04112.68
5.3.200.0070.05812.68
5.3.190.0090.04112.68
5.3.180.0040.04012.68
5.3.170.0060.04112.67
5.3.160.0080.05312.68
5.3.150.0100.05212.67
5.3.140.0070.05312.66
5.3.130.0070.05512.66
5.3.120.0060.05012.66
5.3.110.0090.03712.65
5.3.100.0080.05012.13
5.3.90.0050.05112.11
5.3.80.0090.03512.10
5.3.70.0100.04912.10
5.3.60.0070.04012.08
5.3.50.0080.03512.04
5.3.40.0080.03612.03
5.3.30.0070.03512.00
5.3.20.0040.03811.78
5.3.10.0050.03711.74
5.3.00.0070.03511.72
5.2.170.0070.0419.23
5.2.160.0050.0459.23
5.2.150.0120.0299.23
5.2.140.0060.0479.23
5.2.130.0060.0319.19
5.2.120.0060.0299.19
5.2.110.0090.0279.20
5.2.100.0070.0289.19
5.2.90.0070.0289.19
5.2.80.0050.0319.18
5.2.70.0020.0349.19
5.2.60.0030.0339.14
5.2.50.0100.0289.11
5.2.40.0080.0289.08
5.2.30.0060.0309.05
5.2.20.0060.0299.05
5.2.10.0060.0278.95
5.2.00.0030.0318.82
5.1.60.0050.0248.10
5.1.50.0020.0348.11
5.1.40.0040.0268.08
5.1.30.0070.0278.43
5.1.20.0060.0278.45
5.1.10.0040.0288.18
5.1.00.0040.0288.18
5.0.50.0030.0216.66
5.0.40.0040.0186.52
5.0.30.0060.0306.33
5.0.20.0020.0216.32
5.0.10.0050.0176.30
5.0.00.0030.0316.29
4.4.90.0000.0194.78
4.4.80.0020.0154.75
4.4.70.0020.0164.75
4.4.60.0030.0144.76
4.4.50.0020.0164.77
4.4.40.0010.0274.70
4.4.30.0020.0164.76
4.4.20.0050.0144.84
4.4.10.0020.0164.85
4.4.00.0010.0264.76
4.3.110.0020.0174.67
4.3.100.0030.0154.67
4.3.90.0020.0154.63
4.3.80.0030.0244.59
4.3.70.0020.0164.63
4.3.60.0050.0134.63
4.3.50.0030.0154.62
4.3.40.0030.0244.54
4.3.30.0010.0183.34
4.3.20.0010.0233.32
4.3.10.0010.0223.28
4.3.00.0130.0206.95

preferences:
34.94 ms | 401 KiB | 5 Q