Tsükliliste operatsioonide optimeerimine PHP-s
Isegi kerge operatsioon, mida korratakse tsüklis mitu korda, võib võtta palju resursse.
Vaatame näidet. Olgu meil antud mingi massiiv:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Leiame selle massiivi elementide keskmise. Selleks tuleb leida elementide summa ja jagada see elementide arvuga. Oletame, et mingi programmeerija on selle ülesande juba lahendanud järgmisel viisil:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Vaatame sellise lahenduse probleeme. Tehniliselt töötab kood õigesti ja annab õige vastuse. Asi on selles, et matemaatiliselt on õige nii jagada kogu summat elementide arvuga kui ka jagada iga liidetav elementide arvuga.
Siiski tekib teine probleem. Asi on selles, et me teostame jagamist nii mitu korda, kui palju on elemente meie massiivis. Ja selgub, et teeme suure hulga lisatoiminguid, sest jagamise oleks võinud teha lõpus - ühe korra, jagades kogu leitud summa.
Optimeerime oma koodi:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Optimeerige allolevat koodi:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>