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 = 'abcdefghi'; $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.0171.98568.36
8.3.50.0671.94361.30
8.3.40.0301.01045.19
8.3.30.0501.05246.43
8.3.20.0100.56644.84
8.3.10.0200.56145.88
8.3.00.0070.53548.19
8.2.180.0931.91564.71
8.2.170.0331.04544.92
8.2.160.0500.97046.58
8.2.150.0130.57044.92
8.2.140.0330.55046.58
8.2.130.0200.57346.76
8.2.120.0070.57545.95
8.2.110.0430.81946.43
8.2.100.0200.78043.84
8.2.90.0070.78345.25
8.2.80.0130.77443.57
8.2.70.0170.79243.70
8.2.60.0130.80043.98
8.2.50.0130.82343.83
8.2.40.0130.77944.29
8.2.30.0130.75845.70
8.2.20.0200.79343.76
8.2.10.0130.79943.75
8.2.00.0070.77343.78
8.1.280.0600.94852.21
8.1.270.0130.23938.20
8.1.260.0130.23536.30
8.1.250.0130.26638.52
8.1.240.0130.38138.73
8.1.230.0360.31036.80
8.1.220.0170.34833.83
8.1.210.0170.31534.95
8.1.200.0270.33533.31
8.1.190.0070.35633.49
8.1.180.0130.34733.61
8.1.170.0130.34334.66
8.1.160.0130.34135.00
8.1.150.0130.34134.70
8.1.140.0100.35133.52
8.1.130.0170.33833.80
8.1.120.0100.35633.55
8.1.110.0130.34833.40
8.1.100.0130.36133.55
8.1.90.0070.36733.48
8.1.80.0070.34633.51
8.1.70.0030.35333.50
8.1.60.0200.36733.64
8.1.50.0100.37533.44
8.1.40.0130.37733.49
8.1.30.0130.37233.59
8.1.20.0170.36733.55
8.1.10.0170.82151.61
8.1.00.0300.81151.55
8.0.300.0130.75853.88
8.0.290.0230.76251.17
8.0.280.0200.75052.33
8.0.270.0130.74951.27
8.0.260.0200.78050.83
8.0.250.0100.77050.85
8.0.240.0170.81150.96
8.0.230.0270.76350.95
8.0.220.0130.80650.88
8.0.210.0460.89550.91
8.0.200.0300.76150.87
8.0.190.0370.89950.94
8.0.180.0130.83850.91
8.0.170.0270.81250.78
8.0.160.0200.83050.89
8.0.150.0200.82150.90
8.0.140.0300.81550.75
8.0.130.0471.708109.37
8.0.120.0230.82050.75
8.0.110.0200.81850.90
8.0.100.0330.80250.82
8.0.90.0230.81950.90
8.0.80.0431.22450.88
8.0.70.0330.80250.73
8.0.60.0300.81250.67
8.0.50.0170.82050.74
8.0.30.0671.25751.25
8.0.20.0821.30850.90
8.0.10.0230.81950.84
8.0.00.0831.93048.96
7.4.330.0330.81949.34
7.4.320.0130.80250.53
7.4.300.0270.80150.40
7.4.290.0130.87250.50
7.4.280.0200.88450.53
7.4.270.0230.85150.47
7.4.260.0371.788109.19
7.4.250.0270.88750.41
7.4.240.0170.87450.48
7.4.230.0200.86050.65
7.4.220.0851.91849.70
7.4.210.0551.33850.50
7.4.200.0130.86450.36
7.4.190.0230.85450.64
7.4.160.0531.26850.42
7.4.150.0661.30450.46
7.4.140.0741.48850.47
7.4.130.0741.53150.46
7.4.120.0781.58048.43
7.4.110.0591.74250.55
7.4.100.0701.31550.50
7.4.90.0751.50050.43
7.4.80.0781.48750.46
7.4.70.0981.43250.44
7.4.60.0991.37350.46
7.4.50.0100.69950.39
7.4.40.0271.59050.38
7.4.30.0991.66046.09
7.3.330.0371.876109.40
7.3.320.0631.94479.12
7.3.310.0200.91850.36
7.3.300.0070.92750.32
7.3.290.0591.40450.33
7.3.280.0731.69150.28
7.3.270.0731.30750.43
7.3.260.0681.75750.27
7.3.250.0691.42850.33
7.3.240.0431.50850.59
7.3.230.0521.34650.56
7.3.210.0621.43850.49
7.3.200.0821.46150.44
7.3.190.1081.98750.31
7.3.180.0501.48250.51
7.3.170.0831.75550.38
7.3.160.0501.38450.30
7.2.330.0601.39950.69
7.2.320.0761.55050.75
7.2.310.0691.74150.79
7.2.300.0491.45050.65
7.2.290.0431.50350.79
7.2.91.3570.98939.81
7.2.80.8751.48345.63
7.1.210.6070.46925.71
7.1.200.9701.29537.90
7.0.311.1571.16637.47

preferences:
40.56 ms | 401 KiB | 5 Q