PHP'de Döngüsel İşlemlerin Optimizasyonu
Bir döngüde defalarca tekrarlanan hafif bir işlem bile çok fazla kaynak tüketebilir.
Bir örnekle inceleyelim. Bize bir dizi verildiğini varsayalım:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Bu dizinin elemanlarının ortalamasını bulalım. Bunun için elemanların toplamını bulup adedine bölmek gerekir. Bir programcının bu sorunu şu şekilde çözdüğünü varsayalım:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Bu çözümün problemlerini inceleyelim. Teknik olarak kod doğru çalışıyor ve doğru cevabı veriyor. Matematiksel olarak, tüm toplamı adede bölmek de her bir terimi adede bölmek de doğrudur.
Ancak, başka bir problem ortaya çıkıyor. Mesele şu ki, bölme işlemini dizimizdeki eleman kadar çok kez yapacağız. Sonuç olarak, çok fazla gereksiz işlem yapıyoruz, çünkü bölme işlemi sadece en sonda bir kez, bulunan toplamın adedine bölünmesiyle yapılabilirdi.
Kodumuzu optimize edelim:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Aşağıdaki kodu optimize edin:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>