Optimización de operaciones cíclicas en PHP
Incluso una operación ligera, repetida múltiples veces en un bucle, puede consumir muchos recursos.
Veamos un ejemplo. Supongamos que tenemos un array:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Encontremos el promedio de los elementos de este array. Para hacer esto, necesitamos encontrar la suma de los elementos y dividirla por la cantidad. Supongamos que algún programador ya resolvió este problema de la siguiente manera:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Analicemos los problemas de esta solución. Técnicamente, el código funciona correctamente y da la respuesta correcta. El hecho es que matemáticamente es correcto tanto dividir la suma total por la cantidad, como dividir cada uno de los sumandos por la cantidad.
Sin embargo, surge otro problema. El asunto es que realizaremos la división tantas veces como elementos haya en nuestro array. Y resulta que estamos haciendo una gran cantidad de operaciones innecesarias, ya que la división podría haberse realizado al final - una vez, dividiendo la suma total encontrada.
Optimicemos nuestro código:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Optimice el siguiente código:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>