3v4l.org

run code in 300+ PHP versions simultaneously
<?php $pool = [ 1703 => 15916.19738, 5129 => 11799.15419, 33 => 11173.49945, 1914 => 8439.45987, 2291 => 6284.22271, 5134 => 5963.14065, 5509 => 5169.85755, 4355 => 5153.80867, 2078 => 3932.79341, 31 => 3924.09928, 5433 => 2718.7711, 3172 => 2146.1932, 1896 => 2141.36021, 759 => 1453.5501, 2045 => 1320.74681, 5873 => 1222.7448, 2044 => 1194.4903, 6479 => 1074.1714, 5299 => 950.872, 3315 => 878.06602, 6193 => 847.3372, 1874 => 813.816, 1482 => 330.6422, 6395 => 312.1545, 6265 => 165.9224, 6311 => 122.8785, 6288 => 26.5426, ]; function balanceTeams(array $pool, int $maxTrades = 10): array { arsort($pool); $teams = [[], []]; $i = 1; foreach ($pool as $k => $v) { $teams[$i = 1 - $i][$k] = $v; } $getDiff = fn($a, $b) => array_sum($a) - array_sum($b); for ($i = 0; $i < $maxTrades; ++$i) { $diff = $getDiff(...$teams); //echo "Diff: $diff\n"; if (!$diff) { break; } foreach ($teams[0] as $idA => $valA) { foreach ($teams[1] as $idB => $valB) { if (abs($valA - $valB) < abs($diff)) { $teams[0][$idB] = $valB; $teams[1][$idA] = $valA; unset($teams[0][$idA], $teams[1][$idB]); arsort($teams[0]); arsort($teams[1]); //printf("Trade %d: %s for %s\n", $i + 1, $idA, $idB); continue 3; } } } break; } return $teams; } $teams = balanceTeams($pool); var_export($teams); printf( "Summary:\nAverage: %f\nTeam1 Sum: %f\nTeam2 Sum: %f", array_sum($pool) / 2, array_sum($teams[0]), array_sum($teams[1]) );

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.4.120.0410.01117.54
8.4.110.0390.00617.84
8.4.100.0330.00817.90
8.4.90.0310.01117.63
8.4.80.0240.00417.82
8.4.70.0410.01017.77
8.4.60.0430.00717.57
8.4.50.0420.00917.76
8.4.40.0440.00917.55
8.4.30.0440.00817.36
8.4.20.0460.00917.16
8.4.10.0450.01217.63
8.3.250.0370.01416.54
8.3.240.0230.00416.85
8.3.230.0340.00816.52
8.3.220.0370.00916.61
8.3.210.0400.00716.21
8.3.200.0400.00816.48
8.3.190.0410.01316.31
8.3.180.0320.00816.45
8.3.170.0200.00416.57
8.3.160.0190.00416.57
8.3.150.0370.00316.66
8.3.140.0180.00616.53
8.3.130.0200.00416.16
8.3.120.0190.00916.54
8.3.110.0190.00716.40
8.3.100.0230.00616.32
8.3.90.0340.00616.53
8.3.80.0240.00416.52
8.3.70.0420.00616.27
8.3.60.0440.00916.60
8.3.50.0280.00816.39
8.3.40.0400.01017.55
8.3.30.0360.00317.43
8.3.20.0400.00617.48
8.3.10.0250.00317.50
8.3.00.0090.00317.61
8.2.290.0130.00416.62
8.2.280.0310.00916.59
8.2.270.0340.00916.78
8.2.260.0330.00516.33
8.2.250.0270.00816.64
8.2.240.0130.00616.33
8.2.230.0280.00616.51
8.2.220.0130.00816.86
8.2.210.0170.00416.77
8.2.200.0150.00416.38
8.2.190.0260.00516.76
8.2.180.0140.00516.36
8.2.170.0190.00517.70
8.2.160.0130.00617.68
8.2.150.0230.00517.52
8.2.140.0330.01017.50
8.2.130.0370.00817.75
8.2.120.0300.00917.51
8.2.110.0330.01117.64
8.2.100.0380.00617.44
8.2.90.0390.00517.70
8.2.80.0330.01017.67
8.2.70.0390.00917.02
8.2.60.0340.00617.53
8.2.50.0160.00517.57
8.2.40.0440.00517.43
8.2.30.0170.00517.49
8.2.20.0150.00417.36
8.2.10.0140.00517.56
8.2.00.0160.00417.66

preferences:
27.02 ms | 403 KiB | 5 Q