3v4l.org

run code in 300+ PHP versions simultaneously
<?php function rendreMonnaie(int $montant) { //Déclaration des variables $listeBillets = [10, 5, 2]; //Liste des coupure dispo $nbEntree = 0; //Combien de fois un chiffre entre dans le montant $message = []; $reste = 0; $result = 0; for ($ibillet = 0; $ibillet < sizeof($listeBillets); $ibillet++) { // Calcul du reste de la division du montant par le billet $reste = $montant % $listeBillets[$ibillet]; if ($reste == 0) { // Si le reste est 0, le montant est un multiple du billet // Calcul du nombre de billets nécessaires $nbEntree = intdiv($montant, $listeBillets[$ibillet]); // Ajout du nombre de billets et du type de billet au message array_push($message, "$nbEntree x $listeBillets[$ibillet]"); break; } else if ($reste >= $listeBillets[2]) { // Si le reste est supérieur ou égal au plus petit billet // Calcul du nombre de billets nécessaires $nbEntree = intdiv($montant, $listeBillets[$ibillet]); // Ajout du nombre de billets et du type de billet au message array_push($message, "$nbEntree x $listeBillets[$ibillet]"); // Mise à jour du montant avec le reste $montant = $reste; } else { if ($listeBillets[$ibillet] == 2) { $nbEntree = intdiv($result, $listeBillets[$ibillet]); array_push($message, "$nbEntree x $listeBillets[$ibillet]"); } else { $result = $montant - $listeBillets[$ibillet]; $reste = $reste % $listeBillets[$ibillet]; // Calcul du nombre de billets nécessaires $nbEntree = intdiv($result, $listeBillets[$ibillet]); array_push($message, "$nbEntree x $listeBillets[$ibillet]"); } } } // Affichage du tableau message pour le débogag for ($i = 0; $i < sizeof($message); $i++) { // Suppression des éléments du message qui commencent par un nombre inférieur à 1 if ($message[$i][0] < 1) { unset($message[$i]); } } // Conversion du tableau message en une chaîne de caractères $message = implode(" + ", $message); echo ($message); } foreach (range(0, 35) as $target) { echo $target . ': '; rendreMonnaie($target); echo "\n"; }

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.130.0060.00317.98
8.4.120.0020.00824.03
8.4.110.0110.00924.27
8.4.100.0120.00918.84
8.4.90.0120.00820.84
8.4.80.0070.00218.83
8.4.70.0100.01218.06
8.4.60.0120.00918.76
8.4.50.0110.00920.36
8.4.40.0120.00917.76
8.4.30.0110.00718.69
8.4.20.0030.00619.52
8.4.10.0030.00619.46
8.3.260.0130.00416.83
8.3.250.0140.00618.81
8.3.240.0140.00517.21
8.3.230.0120.00816.65
8.3.220.0070.00319.04
8.3.210.0110.00716.56
8.3.200.0040.00516.65
8.3.190.0060.00217.20
8.3.180.0140.00516.96
8.3.170.0070.01318.58
8.3.160.0040.01118.50
8.3.150.0100.01016.51
8.3.140.0080.00016.51
8.3.130.0070.01416.70
8.3.120.0070.00320.91
8.3.110.0080.00020.94
8.3.100.0000.00924.06
8.3.90.0040.00426.77
8.3.80.0060.00318.43
8.3.70.0040.01116.63
8.3.60.0070.01518.68
8.3.50.0120.00318.41
8.3.40.0090.00619.96
8.3.30.0070.00721.86
8.3.20.0000.00824.18
8.3.10.0070.00024.66
8.3.00.0100.00326.35
8.2.290.0100.00920.58
8.2.280.0090.01018.19
8.2.270.0070.01317.13
8.2.260.0060.01218.25
8.2.250.0080.00018.57
8.2.240.0060.01318.93
8.2.230.0040.00422.58
8.2.220.0050.00337.54
8.2.210.0050.00326.77
8.2.200.0060.00316.38
8.2.190.0120.00318.16
8.2.180.0140.00316.63
8.2.170.0120.00618.68
8.2.160.0050.00822.96
8.2.150.0080.00025.66
8.2.140.0090.00024.66
8.2.130.0040.00726.35
8.2.120.0100.00326.35
8.2.110.0110.00326.35
8.2.100.0070.00326.35
8.2.90.0090.00026.35
8.2.80.0030.00626.35
8.2.70.0120.00426.35
8.2.60.0050.00526.35
8.2.50.0060.00326.35
8.2.40.0070.00426.35
8.2.30.0050.00526.35
8.2.20.0090.00026.35
8.2.10.0040.00426.35
8.2.00.0040.00426.35
8.1.330.0180.00222.04
8.1.320.0160.00416.30
8.1.310.0090.00916.70
8.1.300.0030.00616.05
8.1.290.0040.00430.84
8.1.280.0150.00625.92
8.1.270.0080.00023.99
8.1.260.0000.00726.35
8.1.250.0090.00026.35
8.1.240.0060.00326.35
8.1.230.0050.00526.35
8.1.220.0020.00726.35
8.1.210.0070.00226.35
8.1.200.0160.00026.35
8.1.190.0030.00726.35
8.1.180.0050.00526.35
8.1.170.0130.00026.35
8.1.160.0070.00326.35
8.1.150.0060.00326.35
8.1.140.0100.00326.35
8.1.130.0070.00726.35
8.1.120.0060.00626.35
8.1.110.0060.00626.35
8.1.100.0060.00626.35
8.1.90.0030.00726.35
8.1.80.0090.00426.35
8.1.70.0050.00526.35
8.1.60.0060.00326.35
8.1.50.0000.00926.35
8.1.40.0030.00626.35
8.1.30.0080.00526.35
8.1.20.0050.00526.35
8.1.10.0100.00026.35
8.1.00.0060.00626.35

preferences:
50.85 ms | 403 KiB | 5 Q