Optimalizácia cyklických operácií v PHP
Aj ľahká operácia, ktorá sa mnohokrát opakuje v cykle, môže spotrebovať veľa prostriedkov.
Pozrime sa na príklad. Majme dané nejaké pole:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Nájdime priemer prvkov tohto poľa. Na to je potrebné nájsť súčet prvkov a vydeliť ho ich počtom. Predpokladajme, že nejaký programátor už túto úlohu vyriešil nasledovným spôsobom:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Pozrime sa na problémy takéhoto riešenia. Technicky kód funguje správne a dáva správnu odpoveď. Faktom je, že matematicky je správne ako deliť celý súčet počtom, tak a deliť každý z členov počtom.
Avšak vzniká iný problém. Vec je v tom, že budeme vykonávať delenie tolko krát, koľko je prvkov v našom poli. A vychádza to tak, že robíme veľké množstvo nadbytočných operácií, veď delenie by sa dalo vykonať na konci - raz, vydelením celého nájdeného súčtu.
Optimalizujme náš kód:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Optimalizujte nižšie uvedený kód:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>