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); return implode("", $result); } $r = array(); $letters = 'abcdefghijklm'; //$letters = 'abcdef'; $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));

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.0131.71666.49
8.3.50.0701.80364.57
8.3.40.0470.77343.08
8.3.30.0660.78144.38
8.3.20.0330.41842.86
8.3.10.0100.43243.84
8.3.00.0100.48047.54
8.2.180.0701.67064.45
8.2.170.0330.78542.98
8.2.160.0370.81344.36
8.2.150.0230.42042.92
8.2.140.0170.45144.42
8.2.130.0170.43544.53
8.2.120.0070.42844.18
8.2.110.0170.68444.27
8.2.100.0070.65441.91
8.2.90.0130.62943.29
8.2.80.0170.58243.46
8.2.70.0200.65241.64
8.2.60.0130.65641.84
8.2.50.0170.67841.75
8.2.40.0130.64242.29
8.2.30.0030.62643.30
8.2.20.0170.65041.66
8.2.10.0230.64841.55
8.2.00.0170.63941.71
8.1.280.0630.82150.04
8.1.270.0170.19138.10
8.1.260.0270.18536.46
8.1.250.0130.18538.32
8.1.240.0030.30238.53
8.1.230.0230.27636.96
8.1.220.0130.29533.62
8.1.210.0100.27235.04
8.1.200.0200.40433.06
8.1.190.0170.29233.61
8.1.180.0200.28633.59
8.1.170.0230.27534.73
8.1.160.0070.29735.02
8.1.150.0030.29534.73
8.1.140.0100.29533.43
8.1.130.0200.27033.89
8.1.120.0070.30633.55
8.1.110.0130.28633.54
8.1.100.0130.29833.49
8.1.90.0130.29433.42
8.1.80.0070.28333.41
8.1.70.0070.29333.48
8.1.60.0070.31933.66
8.1.50.0070.31533.51
8.1.40.0100.31633.61
8.1.30.0130.31433.70
8.1.20.0100.31333.64
8.1.10.0300.64749.67
8.1.00.0270.69149.62
8.0.300.0200.61451.97
8.0.290.0260.61648.93
8.0.280.0200.61450.30
8.0.270.0100.61949.21
8.0.260.0270.62548.63
8.0.250.0300.60948.94
8.0.240.0300.63748.83
8.0.230.0100.65248.76
8.0.220.0130.66048.65
8.0.210.0200.64448.66
8.0.200.0130.63448.80
8.0.190.0230.66948.81
8.0.180.0330.65348.85
8.0.170.0200.66948.82
8.0.160.0130.68148.91
8.0.150.0130.67448.75
8.0.140.0200.67048.79
8.0.130.0571.38577.32
8.0.120.0330.67248.83
8.0.110.0170.67648.71
8.0.100.0130.67148.89
8.0.90.0300.64948.64
8.0.80.0391.14448.68
8.0.70.0130.66548.82
8.0.60.0200.67148.64
8.0.50.0130.66748.81
8.0.30.0821.16848.71
8.0.20.0641.12748.92
8.0.10.0100.66648.90
8.0.00.0671.17048.61
7.4.330.0070.61347.02
7.4.320.0370.63948.41
7.4.300.0130.67348.43
7.4.290.0200.70248.24
7.4.280.0330.70148.29
7.4.270.0160.75848.47
7.4.260.0371.44277.17
7.4.250.0200.72048.20
7.4.240.0270.69048.50
7.4.230.0170.69548.51
7.4.220.0660.97448.43
7.4.210.0451.12848.40
7.4.200.0300.68448.27
7.4.190.0130.70248.66
7.4.160.0361.05448.39
7.4.150.0601.11148.47
7.4.140.0771.10648.45
7.4.130.0591.28848.56
7.4.120.0591.04348.60
7.4.110.0691.19648.49
7.4.100.0531.11148.30
7.4.90.0691.20048.52
7.4.80.0461.17748.54
7.4.70.0921.56448.40
7.4.60.0421.00648.49
7.4.50.0170.55448.25
7.4.40.2201.11748.40
7.4.30.0751.31348.42
7.4.00.0271.28247.06
7.3.330.0331.52577.34
7.3.320.0671.54177.39
7.3.310.0230.73848.15
7.3.300.0100.75648.12
7.3.290.0701.07048.25
7.3.280.0631.33648.27
7.3.270.0621.14348.41
7.3.260.0751.33548.38
7.3.250.0461.08948.38
7.3.240.0721.06748.49
7.3.230.0431.14348.23
7.3.210.0591.30848.54
7.3.200.0611.46548.43
7.3.190.0531.15948.37
7.3.180.0701.07448.50
7.3.170.0661.19948.46
7.3.160.0561.17248.45
7.3.120.0101.33646.90
7.2.330.0731.22248.54
7.2.320.0631.40748.66
7.2.310.0921.57448.49
7.2.300.0561.26048.54
7.2.290.0591.16248.64
7.2.60.1160.73748.89
7.2.00.0100.97651.33
7.1.200.1000.89747.81
7.1.70.0070.95449.09
7.1.60.0170.93249.47
7.1.50.0270.87149.15
7.1.00.0131.04354.24
7.0.200.0470.99548.54
7.0.140.0071.05754.04
7.0.100.0930.95752.04
7.0.90.1530.95051.87
7.0.80.1170.83351.89
7.0.70.1100.94751.93
7.0.60.3730.79351.95
7.0.50.3770.90352.32
7.0.40.0170.98336.08
7.0.30.0130.95336.03
7.0.20.2530.90035.93
7.0.10.2470.83036.05
7.0.00.2270.94735.99
5.6.280.0201.52385.42
5.6.250.0271.15785.02
5.6.240.0231.33385.05
5.6.230.0231.23785.16
5.6.220.0201.37385.23
5.6.210.0271.42384.96
5.6.200.0271.34085.64
5.6.190.0101.36085.58
5.6.180.0301.29085.59
5.6.170.0301.30785.58
5.6.160.0271.09785.63
5.6.150.0501.35385.67
5.6.140.0201.18085.58
5.6.130.0171.25785.56
5.6.120.0101.21385.55
5.6.110.0271.39785.46
5.6.100.0201.28385.61
5.6.90.0171.12085.57
5.6.80.0101.10084.86
5.6.70.0171.25384.96
5.6.60.0171.27384.93
5.6.50.0331.27084.80
5.6.40.0231.29384.85
5.6.30.0331.31784.93
5.6.20.0171.22384.82
5.6.10.0331.32384.95
5.6.00.0301.12085.01
5.5.380.0201.21384.99
5.5.370.0201.16784.98
5.5.360.0231.18785.04
5.5.350.0271.20384.93
5.5.340.0371.37385.39
5.5.330.0201.18785.46
5.5.320.0331.41085.43
5.5.310.0271.36085.40
5.5.300.0301.37785.33
5.5.290.0201.36085.41
5.5.280.0331.23385.46
5.5.270.0201.39785.41
5.5.260.0331.39085.40
5.5.250.0271.24085.26
5.5.240.0471.37384.65
5.5.230.0231.34084.55
5.5.220.0271.29084.73
5.5.210.0231.18384.73
5.5.200.0231.40784.61
5.5.190.0201.42084.75
5.5.180.0071.20384.79
5.5.160.0071.34384.81
5.5.150.0271.37784.79
5.5.140.0331.21384.59
5.5.130.0371.20384.68
5.5.120.0331.35384.76
5.5.110.0201.33784.52
5.5.100.0201.37084.61
5.5.90.0231.15384.60
5.5.80.0201.31384.50
5.5.70.0101.42384.57
5.5.60.0071.17784.46
5.5.50.0201.20784.47
5.5.40.0231.26084.47
5.5.30.0331.45784.62
5.5.20.0201.30384.59
5.5.10.0371.43784.62
5.5.00.0101.32784.62
5.4.450.0271.38383.87
5.4.440.0171.35783.79
5.4.430.0171.31783.81
5.4.420.0301.25783.64
5.4.410.0131.14383.68
5.4.400.0331.32083.52
5.4.390.0271.33083.36
5.4.380.0131.36083.68
5.4.370.0101.29083.68
5.4.360.0371.43383.36
5.4.350.0331.22783.65
5.4.340.0231.18783.46
5.4.320.0231.33383.37
5.4.310.1531.13783.57
5.4.300.0231.34383.58
5.4.290.0331.25383.64
5.4.280.0271.27083.41
5.4.270.0331.25083.37
5.4.260.0271.35083.51
5.4.250.0401.29083.55
5.4.240.0401.08783.46
5.4.230.0331.11783.67
5.4.220.0201.31083.67
5.4.210.0171.30083.33
5.4.200.0201.32783.32
5.4.190.0231.30783.47
5.4.180.0201.32083.55
5.4.170.0171.30083.30
5.4.160.0401.30083.66
5.4.150.0371.31083.34
5.4.140.0171.41380.86
5.4.130.0271.29380.95
5.4.120.0271.23780.80
5.4.110.0201.15080.74
5.4.100.0331.33080.78
5.4.90.0201.28780.93
5.4.80.0401.31780.78
5.4.70.0201.17780.85
5.4.60.0401.14780.95
5.4.50.0401.36780.77
5.4.40.0201.21080.83
5.4.30.0201.16380.94
5.4.20.0171.34380.95
5.4.10.0331.15780.83
5.4.00.0301.35780.33
5.3.290.0171.40777.80
5.3.280.0331.30377.88
5.3.270.0071.44377.77
5.3.260.0201.40377.75
5.3.250.0301.45078.43
5.3.240.0231.29777.95
5.3.230.0171.39078.45
5.3.220.0301.59077.77
5.3.210.0371.31077.79
5.3.200.0271.34777.69
5.3.190.0201.49377.81
5.3.180.0301.43077.74
5.3.170.0201.42377.69
5.3.160.0231.57777.73
5.3.150.0471.50077.74
5.3.140.1471.53077.76
5.3.130.0331.53777.87
5.3.120.0331.34377.79
5.3.110.0101.58377.86
5.3.100.0171.35777.26
5.3.90.0231.36077.18
5.3.80.0271.57077.15
5.3.70.0231.58777.08
5.3.60.0231.54377.23
5.3.50.0301.47377.16
5.3.40.0171.47077.23
5.3.30.0201.53077.02
5.3.20.0171.45376.81
5.3.10.0431.56376.88
5.3.00.0231.47376.84
5.2.170.0171.79074.70
5.2.160.0131.67374.62
5.2.150.0501.85374.56
5.2.140.0271.65074.66
5.2.130.0231.67374.41
5.2.120.0431.65774.53
5.2.110.0271.50074.63
5.2.100.0231.62074.60
5.2.90.0171.63375.52
5.2.80.0301.69774.48
5.2.70.0231.67774.55
5.2.60.0331.73774.54
5.2.50.0231.54074.70
5.2.40.0131.60774.64
5.2.30.0171.57374.52
5.2.20.0371.61374.58
5.2.10.0531.62374.54
5.2.00.0702.30359.42
5.1.60.0872.29064.72
5.1.50.0532.40072.16
5.1.40.0572.36070.38
5.1.30.0672.33069.03
5.1.20.0532.36767.49
5.1.10.0472.43070.40
5.1.00.0702.35770.34
5.0.50.0602.38043.38
5.0.40.0472.35044.44
5.0.30.0332.43746.33
5.0.20.0532.40740.98
5.0.10.0372.43342.97
5.0.00.0302.43042.63
4.4.90.0432.42048.07
4.4.80.0502.39048.34
4.4.70.0802.36350.10
4.4.60.0432.39751.79
4.4.50.0432.40748.43
4.4.40.0602.37047.27
4.4.30.0702.34750.31
4.4.20.0532.39349.01
4.4.10.0332.40750.27
4.4.00.0632.41048.23
4.3.110.0472.41349.60
4.3.100.0332.34346.93
4.3.90.0832.38044.51
4.3.80.0372.43046.53
4.3.70.0572.38047.96
4.3.60.0372.39747.72
4.3.50.0502.40045.55
4.3.40.0302.44047.11
4.3.30.0432.39743.78
4.3.20.0532.37346.33
4.3.10.0872.35340.73
4.3.00.0602.39350.70

preferences:
44.4 ms | 401 KiB | 5 Q