Ottimizzazione delle operazioni cicliche in PHP
Anche un'operazione leggera, ripetuta più volte in un ciclo, può consumare molte risorse.
Diamo un'occhiata a un esempio. Supponiamo di avere un array:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Troviamo la media degli elementi di questo array. Per fare ciò, dobbiamo trovare la somma degli elementi e dividerla per la loro quantità. Supponiamo che un programmatore abbia già risolto questo problema nel modo seguente:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Analizziamo i problemi di questa soluzione. Tecnicamente il codice funziona correttamente e fornisce la risposta giusta. Il fatto è che matematicamente è corretto sia dividere l'intera somma per la quantità, sia dividere ciascuno degli addendi per la quantità.
Tuttavia, sorge un altro problema. Il fatto è che eseguiremo la divisione tante volte quanti sono gli elementi nel nostro array. E risulta che stiamo facendo un gran numero di operazioni superflue, dal momento che la divisione avrebbe potuto essere eseguita alla fine - una volta, dividendo l'intera somma trovata.
Ottimizziamo il nostro codice:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Ottimizza il codice qui sotto:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>