3v4l.org

run code in 300+ PHP versions simultaneously
<?php function pack_encode($val) { $str = ''; while ($val > 0) { $str .= chr($val & 0xFF); $val = $val >> 8; } // "/" json-encodes poorly and "=" is padding return str_replace( array('/', '='), array('_', ''), base64_encode($str) ); } function pack_decode($bin) { $str = base64_decode(str_replace('_', '/', $bin)); $val = 0; for ($i=0; $i<strlen($str); $i++) { $val |= (ord($str[$i]) << ($i * 8)); } return $val; } for ($i=0; $i<32; $i++) { $val = 1<<$i; $enc = pack_encode($val); $dec = pack_decode($enc); echo "$val => $enc => $dec\n" } /* $arr = array(); $packed = pack('N', 32767); for ($i=0; $i<strlen($packed); $i++) { $arr[$i] = ord($packed[$i]); } print_r($arr); function pack_encode($val) { $b64 = base64_encode(pack($format, $val)); return str_replace(array('/', '='), array('_', ''), $b64); // "/" json-encodes poorly and "=" is padding } function pack_decode($bin) { $b64 = str_replace('_', '/', $bin); // un-padded $data = unpack('C'.(length($bin)/2), base64_decode($b64, false)); $val = 0; foreach ($data as $v) { $val = ($val<<$width) | $v; } return $val; } $max = 32767; $n = 20; $step = intval($max/$n); for ($i=0; $i<=$n; $i++) { $val = $i*$step; $enc = pack_encode($val); $dec = pack_decode($val); echo "$enc $dec $val\n"; } */

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)
5.4.310.0070.04712.52
5.4.300.0050.03812.53
5.4.290.0030.04112.52
5.4.280.0050.03612.41
5.4.270.0030.03912.42
5.4.260.0030.04012.42
5.4.250.0040.04312.41
5.4.240.0070.03612.41
5.4.230.0040.04612.41
5.4.220.0070.03512.41
5.4.210.0080.03412.41
5.4.200.0070.03612.41
5.4.190.0050.03612.40
5.4.180.0070.03912.41
5.4.170.0050.03712.41
5.4.160.0020.04112.41
5.4.150.0030.03812.40
5.4.140.0030.03912.09
5.4.130.0070.03412.07
5.4.120.0080.03312.04
5.4.110.0060.03412.04
5.4.100.0060.03412.03
5.4.90.0040.03812.04
5.4.80.0050.03712.04
5.4.70.0070.03312.03
5.4.60.0050.03612.03
5.4.50.0010.03912.03
5.4.40.0050.03512.02
5.4.30.0050.03612.02
5.4.20.0070.03412.01
5.4.10.0060.03412.01
5.4.00.0050.03711.51
5.3.280.0090.03712.71
5.3.270.0050.04112.73
5.3.260.0060.03912.72
5.3.250.0100.04912.72
5.3.240.0110.03812.72
5.3.230.0050.03812.71
5.3.220.0070.03512.68
5.3.210.0040.04112.68
5.3.200.0040.03912.68
5.3.190.0110.03312.68
5.3.180.0070.03512.67
5.3.170.0070.03612.66
5.3.160.0060.03712.67
5.3.150.0050.03912.67
5.3.140.0050.03812.66
5.3.130.0050.04012.66
5.3.120.0050.04012.66
5.3.110.0090.03612.66
5.3.100.0070.03812.13
5.3.90.0080.05912.11
5.3.80.0050.04312.10
5.3.70.0070.05112.10
5.3.60.0080.04912.09
5.3.50.0070.03812.03
5.3.40.0050.04012.03
5.3.30.0060.03711.99
5.3.20.0050.04211.77
5.3.10.0050.03511.74
5.3.00.0050.03711.72
5.2.170.0060.0359.23
5.2.160.0030.0319.23
5.2.150.0030.0319.23
5.2.140.0050.0309.23
5.2.130.0040.0289.18
5.2.120.0030.0309.18
5.2.110.0070.0269.19
5.2.100.0070.0269.19
5.2.90.0020.0329.19
5.2.80.0040.0319.18
5.2.70.0050.0299.19
5.2.60.0040.0319.14
5.2.50.0060.0389.11
5.2.40.0040.0309.09
5.2.30.0050.0309.06
5.2.20.0050.0289.05
5.2.10.0040.0288.96
5.2.00.0040.0308.82
5.1.60.0060.0228.10
5.1.50.0030.0268.10
5.1.40.0060.0228.08
5.1.30.0030.0268.43
5.1.20.0070.0238.45
5.1.10.0030.0268.17
5.1.00.0000.0298.17
5.0.50.0050.0186.66
5.0.40.0050.0176.52
5.0.30.0030.0326.32
5.0.20.0030.0196.29
5.0.10.0040.0196.27
5.0.00.0050.0296.27
4.4.90.0040.0144.78
4.4.80.0020.0164.75
4.4.70.0020.0164.75
4.4.60.0020.0164.75
4.4.50.0030.0184.77
4.4.40.0020.0264.71
4.4.30.0050.0134.76
4.4.20.0010.0174.84
4.4.10.0020.0164.85
4.4.00.0040.0244.76
4.3.110.0010.0174.67
4.3.100.0020.0164.67
4.3.90.0030.0144.64
4.3.80.0020.0254.59
4.3.70.0040.0134.63
4.3.60.0030.0164.63
4.3.50.0030.0164.63
4.3.40.0030.0244.53
4.3.30.0040.0153.32
4.3.20.0040.0173.30
4.3.10.0040.0153.25
4.3.00.0130.0207.15

preferences:
141.13 ms | 1394 KiB | 7 Q