3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php function find_group($cond, &$arr, $e = null) { if ($cond($e, reset($arr) || $e === null) { $e = array_shift($arr) return array_merge([$e], find_group($cond, $arr, $e)) } return []; } function array_group($cond, $arr) { if (empty($arr)) return []; /*while($cond($e, reset($arr))) { $g[] = array_shift($arr); }*/ return array_merge([find_group($arr)], array_group($cond, $arr)); } function it($m,$p){echo ($p?'OK':'NO')." It $m\n";} function eq($a,$b) {return $a==$b;} echo it ('groups', array_group('eq', [1,5,5,6,6,6,7,9]) == [[1],[5,5],[6,6,6],[7],[9]]); echo it ('groups by comparing with first item of each group', array_group(function ($a, $b) { return ($a == ($b-1)) || ($a==$b); }, [1,1,2,3,1]) == [[1,1,2],[3],[1]]); echo it ('groups by comparing with first item of each group', array_group(function ($a, $b) { return ($a == ($b-1)) || ($a==$b); }, [1,1,2,1,3,1]) == [[1,1,2,1],[3],[1]]);
based on o5QUq

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).
Note: hhvm uses a JIT which only kicks in after a few runs. Since we run scripts only once, hhvm always runs slower.

VersionSystem time (s)User time (s)Memory (MiB)
5.4.340.0090.03912.02
5.4.320.0050.04112.52
5.4.310.0100.03312.51
5.4.300.0030.03812.52
5.4.290.0060.03612.51
5.4.280.0060.03812.41
5.4.270.0030.03712.41
5.4.260.0070.03612.41
5.4.250.0060.03512.41
5.4.240.0040.03812.41
5.4.230.0060.04212.40
5.4.220.0070.03812.40
5.4.210.0070.03412.40
5.4.200.0030.04412.40
5.4.190.0050.04012.39
5.4.180.0060.03512.39
5.4.170.0050.03712.40
5.4.160.0100.03412.40
5.4.150.0010.04012.40
5.4.140.0060.03612.09
5.4.130.0030.03712.07
5.4.120.0040.04512.03
5.4.110.0070.03412.03
5.4.100.0040.03612.03
5.4.90.0040.04312.03
5.4.80.0070.03412.03
5.4.70.0050.04212.03
5.4.60.0080.03112.03
5.4.50.0030.03712.03
5.4.40.0040.03612.01
5.4.30.0050.03512.02
5.4.20.0060.03412.00
5.4.10.0040.03512.01
5.4.00.0030.03811.50
5.3.290.0080.03612.80
5.3.280.0050.03912.71
5.3.270.0050.03812.72
5.3.260.0020.04112.72
5.3.250.0040.04112.72
5.3.240.0080.03412.72
5.3.230.0050.03712.71
5.3.220.0040.03612.68
5.3.210.0080.03512.68
5.3.200.0060.03512.68
5.3.190.0030.03912.68
5.3.180.0070.03212.67
5.3.170.0070.03312.66
5.3.160.0080.03812.68
5.3.150.0100.03512.67
5.3.140.0100.03412.66
5.3.130.0060.03912.66
5.3.120.0040.03912.66
5.3.110.0040.04012.66
5.3.100.0030.03712.13
5.3.90.0050.04612.11
5.3.80.0050.04112.10
5.3.70.0030.03712.09
5.3.60.0030.03712.08
5.3.50.0040.03612.02
5.3.40.0060.03412.02
5.3.30.0060.03211.98
5.3.20.0060.03311.77
5.3.10.0050.04311.74
5.3.00.0080.04011.72
5.2.170.0050.0299.21
5.2.160.0040.0289.22
5.2.150.0080.0319.22
5.2.140.0060.0289.21
5.2.130.0040.0289.18
5.2.120.0050.0289.18
5.2.110.0050.0289.18
5.2.100.0050.0279.18
5.2.90.0040.0319.18
5.2.80.0040.0299.17
5.2.70.0040.0299.18
5.2.60.0020.0329.13
5.2.50.0060.0279.09
5.2.40.0020.0309.07
5.2.30.0050.0289.05
5.2.20.0040.0289.05
5.2.10.0030.0298.95
5.2.00.0050.0278.81
5.1.60.0050.0228.09
5.1.50.0020.0268.09
5.1.40.0010.0268.07
5.1.30.0040.0258.42
5.1.20.0050.0268.44
5.1.10.0030.0268.16
5.1.00.0060.0238.17
5.0.50.0020.0216.64
5.0.40.0030.0196.51
5.0.30.0020.0336.31
5.0.20.0030.0196.29
5.0.10.0020.0226.27
5.0.00.0030.0306.26
4.4.90.0040.0134.78
4.4.80.0010.0164.75
4.4.70.0030.0154.76
4.4.60.0030.0144.75
4.4.50.0020.0154.77
4.4.40.0040.0234.71
4.4.30.0020.0154.76
4.4.20.0020.0164.85
4.4.10.0020.0164.84
4.4.00.0010.0264.76
4.3.110.0020.0164.67
4.3.100.0010.0164.66
4.3.90.0030.0144.64
4.3.80.0020.0244.58
4.3.70.0050.0124.63
4.3.60.0020.0154.63
4.3.50.0020.0164.63
4.3.40.0020.0244.54
4.3.30.0030.0143.30
4.3.20.0020.0163.27
4.3.10.0030.0143.24
4.3.00.0070.0178.12