3v4l.org

run code in 300+ PHP versions simultaneously
<?php $max = 50; //Fonction qui retourne les multiples d'un diviseur <= max //Logique de calculs $memoryF = memory_get_usage(); function multiplesDe($diviseur, $max) { $result = array(); for($i=0; $i<=$max; $i+=$diviseur) { $result[] = $i; //L'ensemble des résultats dont chargés en mémoire par la fonction } return $result; } //Logique d'affichage //var_dump(multiplesDe(7,$max)); $multiplesDeSept = multiplesDe(7,$max); //Ici se trouve le gros stockage mémoire! foreach(multiplesDe(7,$max) as $i => $multiples) { echo "$i => $multiples<br />"; } // echo memory_get_usage()-$memoryF,"<br />"; //var_dump($multiplesDeSept); //On implémente la classe PHP5 Iterator /* http://fr2.php.net/manual/fr/class.iterator.php abstract public mixed current ( void ) OK abstract public scalar key ( void ) OK abstract public void next ( void ) OK abstract public void rewind ( void ) OK (implémentée) abstract public boolean valid ( void ) OK */ $memoryI = memory_get_usage(); class MultiplesIterator implements Iterator { protected $diviseur,$max; //parametres calculs protected $current, $indiceCurrent; public function __construct($diviseur, $max) { $this->diviseur = $diviseur; $this->max = $max; } public function rewind() { // On revient au début! $this->current = 0; $this->indiceCurrent = 0; } public function valid() { // Condition de fin de boucle! return ($this->current <= $this->max); } public function current() { // retourne la valeur courante ! return $this->current; } public function key() { // retourne l'indice de la velru courante(la clé!) return $this->indiceCurrent; } public function next() { // fait passer au prochain élément! $this->indiceCurrent += 1; $this->current += $this->diviseur; } } $iterator = new MultiplesIterator(7,$max); foreach($iterator as $i => $multiples) { echo "$i => $multiples<br />"; } //Stockage de l'ensemble des résultats dans une liste > peu gourmand. //echo memory_get_usage()-$memoryI,"<br />"; $memoryG = memory_get_usage(); // on implémente la classe Generator! // Yield: Lorsque yield est atteint, la valeur qu’il spécifie est renvoyée à l’appelant, et l’exécution de la fonction est mise en pause // jusqu’à ce que l’appelant demande à ce qu’elle soit continuée. function multiplesDeG($diviseur, $max) { for($i=0,$n=0; $n<=$max; $i++,$n+=$diviseur) { yield $i => $n; //On renvoit directement la valeur à l'appelant: } } $listeMultiples = multiplesDeG(7, $max); foreach($listeMultiples as $i => $multiples) //foreach(multiplesDeG(7, $max) as $i => $multiples) fonctionne aussi! { echo "$i => $multiples<br />"; } // echo memory_get_usage()-$memoryG; var_dump(multiplesDeG(7, $max) instanceof Generator);

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)
7.4.00.0070.01015.00
7.3.120.0110.00814.88
7.3.110.0090.00914.75
7.3.100.0070.01014.70
7.3.90.0030.01014.88
7.3.80.0080.00814.95
7.3.70.0070.00814.86
7.3.60.0070.00914.91
7.3.50.0040.00914.74
7.3.40.0060.00715.00
7.3.30.0030.01214.80
7.3.20.0100.00416.71
7.3.10.0030.01116.50
7.3.00.0030.01016.75
7.2.250.0060.01315.10
7.2.240.0060.00815.24
7.2.230.0070.00715.13
7.2.220.0060.00915.05
7.2.210.0040.01215.10
7.2.200.0090.00715.13
7.2.190.0060.00815.05
7.2.180.0080.00715.10
7.2.170.0080.00715.06
7.2.160.0060.00915.19
7.2.150.0080.00516.80
7.2.140.0090.00917.08
7.2.130.0100.00616.93
7.2.120.0120.00316.99
7.2.110.0110.00516.86
7.2.100.0070.00616.83
7.2.90.0050.01016.96
7.2.80.0120.00317.01
7.2.70.0050.00817.07
7.2.60.0050.00817.04
7.2.50.0050.01016.96
7.2.40.0100.00516.94
7.2.30.0080.00617.11
7.2.20.0110.00516.99
7.2.10.0070.00916.97
7.2.00.0030.01116.86
7.1.330.0030.01315.86
7.1.320.0070.00615.94
7.1.310.0080.00715.64
7.1.300.0080.00515.85
7.1.290.0030.01115.74
7.1.280.0080.00815.85
7.1.270.0040.00915.65
7.1.260.0030.01115.84
7.1.250.0050.00715.80
7.1.240.0000.01215.53
7.1.230.0090.00615.97
7.1.220.0030.01015.69
7.1.210.0090.00315.91
7.1.200.0100.00315.97
7.1.190.0060.00615.80
7.1.180.0030.01015.96
7.1.170.0090.00615.84
7.1.160.0060.00915.46
7.1.150.0040.01215.82
7.1.140.0070.00715.62
7.1.130.0000.01215.86
7.1.120.0130.00015.57
7.1.110.0030.01015.91
7.1.100.0100.00615.79
7.1.90.0150.00015.71
7.1.80.0050.00515.90
7.1.70.0050.00716.47
7.1.60.0050.01217.53
7.1.50.0160.00316.24
7.1.40.0100.00315.54
7.1.30.0000.01315.80
7.1.20.0060.00915.85
7.1.10.0030.00615.95
7.1.00.0000.02519.13
7.0.330.0030.00815.32
7.0.320.0040.00415.21
7.0.310.0070.01015.34
7.0.300.0060.00915.20
7.0.290.0030.00615.41
7.0.280.0000.01015.41
7.0.270.0000.01415.57
7.0.260.0070.00715.39
7.0.250.0100.00315.57
7.0.240.0070.00715.53
7.0.230.0090.00615.47
7.0.220.0030.00715.10
7.0.210.0070.01015.44
7.0.200.0100.00315.95
7.0.190.0070.00315.33
7.0.180.0080.00315.25
7.0.170.0080.00615.55
7.0.160.0040.00815.28
7.0.150.0090.00315.47
7.0.140.0050.03718.78
7.0.130.0060.00915.32
7.0.120.0060.00615.45
7.0.110.0030.00815.45
7.0.100.0100.03317.77
7.0.90.0060.02517.76
7.0.80.0060.02317.68
7.0.70.0030.02417.69
7.0.60.0020.03217.79
7.0.50.0100.02017.90
7.0.40.0030.02316.84
7.0.30.0080.02416.82
7.0.20.0090.01816.70
7.0.10.0070.02116.85
7.0.00.0050.02316.82
5.6.400.0130.00614.73
5.6.390.0040.01114.39
5.6.380.0090.00614.45
5.6.370.0100.00314.50
5.6.360.0040.00814.43
5.6.350.0060.00914.48
5.6.340.0000.01414.88
5.6.330.0040.01114.59
5.6.320.0100.00314.14
5.6.310.0080.00814.59
5.6.300.0120.00614.53
5.6.290.0030.00714.53
5.6.280.0050.04017.96
5.6.270.0030.01214.63
5.6.260.0080.00514.61
5.6.250.0120.02617.68
5.6.240.0090.04117.54
5.6.230.0080.02517.47
5.6.220.0100.02117.71
5.6.210.0090.02217.48
5.6.200.0050.02217.83
5.6.190.0080.02017.84
5.6.180.0070.02017.80
5.6.170.0050.02217.82
5.6.160.0030.02817.88
5.6.150.0030.02617.85
5.6.140.0050.02317.90
5.6.130.0030.02517.74
5.6.120.0000.02517.70
5.6.110.0090.01817.66
5.6.100.0070.01817.77
5.6.90.0030.02517.78
5.6.80.0050.02117.28
5.6.70.0050.01917.46
5.6.60.0050.02017.37
5.6.50.0020.02617.29
5.6.40.0050.02217.44
5.6.30.0060.02017.41
5.6.20.0030.02017.35
5.6.10.0020.02417.49
5.6.00.0050.02017.41
5.5.380.0050.02717.51
5.5.370.0050.02917.38
5.5.360.0090.02417.33
5.5.350.0110.02117.31
5.5.340.0030.02417.61
5.5.330.0060.02117.63
5.5.320.0060.02617.64
5.5.310.0050.02117.56
5.5.300.0030.02517.85
5.5.290.0070.02517.78
5.5.280.0030.02017.72
5.5.270.0020.02517.71
5.5.260.0070.02217.53
5.5.250.0070.02017.44
5.5.240.0050.02117.18
5.5.230.0030.02417.45
5.5.220.0040.02217.29
5.5.210.0060.02217.34
5.5.200.0050.02317.27
5.5.190.0030.02017.23
5.5.180.0030.02317.38
5.5.170.0030.00614.45
5.5.160.0020.02917.27
5.5.150.0070.01917.23
5.5.140.0050.02317.35
5.5.130.0050.04217.40
5.5.120.0070.03017.39
5.5.110.0000.03417.41
5.5.100.0060.04317.37
5.5.90.0060.02417.12
5.5.80.0090.03517.17
5.5.70.0050.02517.28
5.5.60.0030.04517.28
5.5.50.0080.03617.20
5.5.40.0000.03117.29
5.5.30.0050.02917.28
5.5.20.0100.02317.15
5.5.10.0120.02517.21
5.5.00.0060.03117.28
5.4.450.0030.02015.79
5.4.440.0030.02015.73
5.4.430.0070.01815.75
5.4.420.0050.01915.72
5.4.410.0020.02015.70
5.4.400.0050.01715.56
5.4.390.0030.02115.51
5.4.380.0040.02015.62
5.4.370.0020.02215.49
5.4.360.0070.01515.61
5.4.350.0030.01915.63
5.4.340.0080.01815.62
5.4.330.0040.00412.08
5.4.320.0050.01815.56
5.4.310.0020.02315.55
5.4.300.0070.04015.55
5.4.290.0050.02115.46
5.4.280.0040.02815.51
5.4.270.0030.02815.55
5.4.260.0050.02715.48
5.4.250.0050.03415.56
5.4.240.0080.02115.61
5.4.230.0050.03515.55
5.4.220.0100.03815.61
5.4.210.0050.03015.58
5.4.200.0080.03515.60
5.4.190.0050.02715.62
5.4.180.0060.04115.64
5.4.170.0030.04315.64
5.4.160.0080.03815.55
5.4.150.0040.02615.63
5.4.140.0070.03614.29
5.4.130.0030.03714.21
5.4.120.0130.02014.25
5.4.110.0000.02614.31
5.4.100.0090.03414.25
5.4.90.0060.04114.21
5.4.80.0020.03114.24
5.4.70.0030.03014.28
5.4.60.0050.02214.27
5.4.50.0060.03814.27
5.4.40.0070.03614.27
5.4.30.0040.03514.28
5.4.20.0020.02314.28
5.4.10.0110.02114.24
5.4.00.0050.03213.96
5.3.290.0020.02113.39
5.3.280.0050.02013.35
5.3.270.0040.04213.36
5.3.260.0050.02113.41
5.3.250.0070.02413.41
5.3.240.0030.03913.35
5.3.230.0080.02013.34
5.3.220.0050.04213.39
5.3.210.0060.03413.39
5.3.200.0080.02813.39
5.3.190.0040.04413.39
5.3.180.0010.02813.34
5.3.170.0030.02513.36
5.3.160.0040.02713.39
5.3.150.0060.03813.36
5.3.140.0060.02313.31
5.3.130.0050.03813.29
5.3.120.0090.04513.35
5.3.110.0070.03013.33
5.3.100.0070.03113.10
5.3.90.0050.03713.08
5.3.80.0050.02413.09
5.3.70.0080.03813.11
5.3.60.0030.03613.04
5.3.50.0080.02013.02
5.3.40.0080.03813.07
5.3.30.0070.03013.06
5.3.20.0030.04212.97
5.3.10.0020.03712.95
5.3.00.0110.02512.86
5.2.170.0000.04011.08
5.2.160.0070.06011.21
5.2.150.0030.04711.30
5.2.140.0100.05711.23
5.2.130.0030.04011.13
5.2.120.0070.04011.00
5.2.110.0030.06011.25
5.2.100.0070.02711.12
5.2.90.0070.03311.24
5.2.80.0030.07311.13
5.2.70.0070.06011.21
5.2.60.0100.02710.98
5.2.50.0000.05711.14
5.2.40.0030.06311.00
5.2.30.0030.06310.88
5.2.20.0100.04710.91
5.2.10.0000.03310.81
5.2.00.0070.03710.83
5.1.60.0030.04310.09
5.1.50.0030.02710.10
5.1.40.0100.02010.03
5.1.30.0030.02710.44
5.1.20.0030.05010.28
5.1.10.0030.02710.16
5.1.00.0000.03310.09
5.0.50.0070.0308.66
5.0.40.0030.0478.66
5.0.30.0000.0678.66
5.0.20.0070.0208.66
5.0.10.0000.0238.66
5.0.00.0000.0338.66
4.4.90.0000.0338.66
4.4.80.0070.0338.66
4.4.70.0030.0378.66
4.4.60.0030.0338.66
4.4.50.0100.0278.66
4.4.40.0130.0408.66
4.4.30.0000.0238.66
4.4.20.0030.0338.66
4.4.10.0030.0238.66
4.4.00.0100.0438.66
4.3.110.0030.0278.66
4.3.100.0030.0338.66
4.3.90.0030.0308.66
4.3.80.0070.0238.66
4.3.70.0000.0338.66
4.3.60.0030.0208.66
4.3.50.0000.0208.66
4.3.40.0030.0508.66
4.3.30.0030.0338.66
4.3.20.0000.0208.66
4.3.10.0000.0238.66
4.3.00.0000.0308.66

preferences:
38.77 ms | 400 KiB | 5 Q