Ciklisko operāciju optimizācija PHP
Pat viegla operācija, kas atkārtota ciklā daudz reižu, var aizņemt daudz resursu.
Apskatīsim piemērā. Pieņemsim, ka mums ir dots kāds masīvs:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Atradīsim šī masīva elementu vidējo vērtību. Lai to izdarītu, jāatrod elementu summa un jādala ar to skaitu. Pieņemsim, ka kāds programmētājs jau atrisināja šo uzdevumu šādi:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Apskatīsim šāda risinājuma problēmas. Tehniski kods darbojas pareizi un sniedz pareizo atbildi. Lieta ir tāda, ka matemātiski korekti ir gan dalīt visu summu ar skaitu, gan dalīt katru no saskaitāmajiem ar skaitu.
Tomēr rodas cita problēma. Lieta ir tāda, ka mēs veiksim dalīšanu tik reižu, cik elementu ir mūsu masīvā. Un iznāk, ka mēs darām lielu skaitu lieku operāciju, jo dalīšanu varēja izpildīt beigās - vienu reizi, dalot visu atrasto summu.
Optimizēsim mūsu kodu:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Optimizējiet zemāk redzamo kodu:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>