Optimering av sykliske operasjoner i PHP
Selv en lett operasjon, gjentatt mange ganger i en løkke, kan bruke mye ressurser.
La oss se på et eksempel. La oss si at vi har en gitt array:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
La oss finne gjennomsnittet av elementene i denne arrayen. For å gjøre dette må du finne summen av elementene og dele den på antallet. La oss si at en programmerer allerede har løst dette problemet på følgende måte:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
La oss se på problemene med denne løsningen. Teknisk sett fungerer koden riktig og gir riktig svar. Saken er at det matematisk sett er korrekt å dele hele summen på antallet, så vel som å dele hvert enkelt ledd på antallet.
Imidlertid oppstår et annet problem. Saken er at vi vil utføre divisjon like mange ganger som det er elementer i vår array. Og det viser seg at vi gjør et stort antall unødvendige operasjoner, siden divisjonen kunne ha blitt utført til slutt - én gang, ved å dele hele den funnet summen.
La oss optimalisere koden vår:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Optimaliser koden nedenfor:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>