3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Returns the total number of $count-length strings generatable from $letters. function getPermCount($letters, $count) { $result = 1; // k characters from a set of n has n!/(n-k)! possible combinations for($i = strlen($letters) - $count + 1; $i <= strlen($letters); $i++) { $result *= $i; } return $result; } // Decodes $index to a $count-length string from $letters, no repeat chars. function getPerm($letters, $count, $index) { $result = array(); for($i = 0; $i < $count; $i++) { $pos = $index % strlen($letters); $result[] = $letters[$pos]; $index = ($index-$pos)/strlen($letters); $letters = substr($letters, 0, $pos) . substr($letters, $pos+1); } sort($result); $result = array_unique($result, SORT_REGULAR); return implode("", $result); } $r = array(); //$letters = 'abcdefghijklm'; $letters = 'abcdefghij'; $len = strlen($letters); for ($c = 1; $c <= $len; $c++) { for($i = 0; $i < getPermCount($letters, $c); $i++) $r[] = getPerm($letters, $c, $i); } //print_r(array_unique($r, SORT_REGULAR)); $r = array_unique($r, SORT_REGULAR); print_r(count($r));

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)
8.3.60.0231.97960.36
8.3.50.0931.91151.95
8.3.40.0401.04842.93
8.3.30.0601.08744.39
8.3.20.0230.56642.72
8.3.10.0070.59743.67
8.3.00.0070.63246.27
8.2.180.0631.94358.23
8.2.170.0371.07742.89
8.2.160.0401.08944.56
8.2.150.0330.56342.93
8.2.140.0230.56044.38
8.2.130.0130.61444.81
8.2.120.0070.58843.86
8.2.110.0070.86944.76
8.2.100.0600.81341.64
8.2.90.0270.83741.70
8.2.80.0130.85741.93
8.2.70.0270.88441.85
8.2.60.0200.87042.07
8.2.50.0100.87841.89
8.2.40.0100.80544.50
8.2.30.0200.82743.32
8.2.20.0130.86341.73
8.2.10.0170.85441.64
8.2.00.0200.97641.59
8.1.280.0531.00249.75
8.1.270.0200.26138.24
8.1.260.0100.28036.26
8.1.250.0100.26038.34
8.1.240.0070.39337.03
8.1.230.0540.40234.99
8.1.220.0200.38633.98
8.1.210.0100.38133.52
8.1.200.0100.39333.39
8.1.190.0130.39133.05
8.1.180.0130.38533.45
8.1.170.0070.38334.61
8.1.160.0170.37935.05
8.1.150.0200.37334.77
8.1.140.0070.39633.58
8.1.130.0200.36833.80
8.1.120.0100.39933.56
8.1.110.0170.37433.52
8.1.100.0100.40033.46
8.1.90.0070.39733.57
8.1.80.0100.37033.61
8.1.70.0130.37633.44
8.1.60.0130.41033.57
8.1.50.0000.42233.47
8.1.40.0030.41933.46
8.1.30.0200.40433.66
8.1.20.0070.41233.59
8.1.10.0230.85949.60
8.1.00.0270.87849.63
8.0.300.0200.76251.65
8.0.290.0200.81748.67
8.0.280.0100.81650.40
8.0.270.0270.80448.65
8.0.260.0370.81248.80
8.0.250.0230.81648.79
8.0.240.0100.83848.91
8.0.230.0200.82148.82
8.0.220.0200.85548.77
8.0.210.0200.84648.75
8.0.200.0230.82948.91
8.0.190.0270.87748.96
8.0.180.0370.99548.79
8.0.170.0170.87648.78
8.0.160.0070.88648.87
8.0.150.0170.88348.80
8.0.140.0300.86948.79
8.0.130.0471.87479.50
8.0.120.0270.86948.73
8.0.110.0330.85448.82
8.0.100.0170.86848.61
8.0.90.0270.87248.65
8.0.80.0431.44348.77
8.0.70.0270.86948.83
8.0.60.0230.87448.88
8.0.50.0430.86748.64
8.0.30.0481.36048.95
8.0.20.0681.47149.20
8.0.10.0130.86648.80
8.0.00.0611.62348.83
7.4.330.0170.92248.31
7.4.320.0330.95348.56
7.4.300.0230.88348.34
7.4.290.0200.94448.55
7.4.280.0230.94648.55
7.4.270.0230.92848.37
7.4.260.0331.97678.71
7.4.250.0230.96548.48
7.4.240.0200.92248.32
7.4.230.0230.92048.50
7.4.220.0871.83248.32
7.4.210.0511.51448.47
7.4.200.0400.89548.62
7.4.190.0300.91148.50
7.4.160.0701.46948.42
7.4.150.0761.59948.53
7.4.140.0531.49448.40
7.4.130.0591.41148.51
7.4.120.0511.44148.47
7.4.110.0921.79248.57
7.4.100.0661.42348.44
7.4.90.0561.51648.41
7.4.80.0992.15948.52
7.4.70.0722.00648.36
7.4.60.0631.55448.48
7.4.50.0130.73148.62
7.4.40.0331.63248.33
7.4.30.1102.01548.35
7.3.330.0301.98075.72
7.3.320.0641.94966.66
7.3.310.0270.97748.30
7.3.300.0130.99148.20
7.3.290.0401.58648.35
7.3.280.0671.70248.31
7.3.270.0401.50948.29
7.3.260.1351.50645.02
7.3.250.0761.45048.36
7.3.240.0561.52748.30
7.3.230.0591.47448.30
7.3.210.0501.45448.47
7.3.200.0781.78748.46
7.3.190.0831.64948.30
7.3.180.0611.67748.57
7.3.170.0492.11848.39
7.3.160.0761.56748.47
7.2.330.0861.60948.77
7.2.320.0661.98948.76
7.2.310.0621.68448.76
7.2.300.0792.29848.44
7.2.290.0431.79848.73
5.4.280.0531.72083.44
5.4.270.0231.65083.64
5.4.260.0501.71383.31
5.4.250.0371.72383.55
5.4.240.0401.63783.30
5.4.230.0571.66783.52
5.4.220.0431.63383.54
5.4.210.0231.71083.55
5.4.200.0531.67383.46
5.4.190.0431.70783.45
5.4.180.0471.70783.66
5.4.170.0531.61083.41
5.4.160.0301.65783.42
5.4.150.0231.61783.53
5.4.140.0471.61380.79
5.4.130.0331.66780.79
5.4.120.3701.66381.18
5.4.110.0631.72380.98
5.4.100.0331.68080.97
5.4.90.0501.71080.96
5.4.80.0472.09780.69
5.4.70.0531.66081.04
5.4.60.0371.62080.96
5.4.50.0631.59781.04
5.4.40.0631.67081.04
5.4.30.0531.70380.76
5.4.20.0371.71780.77
5.4.10.0501.68780.93
5.4.00.0431.79380.35
5.3.280.0331.95377.75
5.3.270.0501.94077.79
5.3.260.0272.01077.76
5.3.250.0431.93077.91
5.3.240.0271.89777.76
5.3.230.0571.98077.82
5.3.220.0502.15077.84
5.3.210.0401.99377.71
5.3.200.0371.98077.87
5.3.190.0531.97377.84
5.3.180.0571.95377.85
5.3.170.0431.93077.79
5.3.160.0902.05777.91
5.3.150.0331.89077.77
5.3.140.0371.95777.78
5.3.130.0331.88377.76
5.3.120.0371.99377.76
5.3.110.0371.97377.88
5.3.100.0501.93077.83
5.3.90.0432.00777.24
5.3.80.0371.95777.22
5.3.70.3901.94077.25
5.3.60.0472.18377.09
5.3.50.0401.96777.03
5.3.40.0271.92377.18
5.3.30.0401.95377.16
5.3.20.0301.96776.82
5.3.10.0401.96076.89
5.3.00.0431.94776.86

preferences:
49.33 ms | 401 KiB | 5 Q