Otimização de operações cíclicas em PHP
Mesmo uma operação leve, repetida várias vezes em um loop, pode consumir muitos recursos.
Vamos ver um exemplo. Suponha que temos um determinado array:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Vamos encontrar a média dos elementos deste array. Para isso, precisamos encontrar a soma dos elementos e dividi-la pela quantidade. Suponha que um programador já resolveu esta tarefa da seguinte forma:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Vamos analisar os problemas dessa solução. Tecnicamente, o código funciona corretamente e fornece a resposta correta. A questão é que matematicamente é correto tanto dividir a soma total pela quantidade quanto dividir cada uma das parcelas pela quantidade.
No entanto, surge outro problema. O fato é que executaremos a divisão quantas vezes houver elementos em nosso array. E acontece que estamos fazendo um grande número de operações desnecessárias, pois a divisão poderia ser feita no final - uma vez, dividindo a soma total encontrada.
Vamos otimizar nosso código:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Otimize o código abaixo:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>