Optimisation des opérations cycliques en PHP
Même une opération légère, répétée de nombreuses fois dans une boucle, peut consommer beaucoup de ressources.
Regardons un exemple. Supposons que nous ayons un tableau donné :
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Trouvons la moyenne des éléments de ce tableau. Pour ce faire, il faut trouver la somme des éléments et la diviser par leur nombre. Supposons qu'un certain programmeur ait déjà résolu cette tâche de la manière suivante :
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Examinons les problèmes de cette solution. Techniquement, le code fonctionne correctement et donne la bonne réponse. Le fait est que mathématiquement, il est correct à la fois de diviser la somme entière par le nombre, et de diviser chacun des termes par le nombre.
Cependant, un autre problème se pose. Le fait est que nous allons effectuer la division autant de fois qu'il y a d'éléments dans notre tableau. Il s'avère que nous effectuons un grand nombre d'opérations inutiles, puisque la division aurait pu être faite à la fin - une seule fois, en divisant la somme totale trouvée.
Optimisons notre code :
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Optimisez le code ci-dessous :
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>