PHP'de Gereksiz Döngü Geçişlerinin Optimizasyonu
Aşağıdaki kodda bir programcı, dizide
3 sayısının olup olmadığını kontrol ediyor:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exists = false;
foreach ($arr as $elem) {
if ($elem == 3) {
$exists = true;
}
}
var_dump($exists);
?>
Bu çözümde yanlış olan ne? Görünüşte döngüde
hiçbir gereksiz işlem yapılmıyor. Ancak sorun şu ki,
dizide 3 sayısının bulunduğu belirlendikten sonra -
döngü yine de dizinin sonuna kadar dönmeye devam ediyor.
En verimsiz durum, 3 sayısı dizinin başlarında bir yerde bulunursa
ve dizinin uzunluğu, diyelim ki 1000 eleman olursa ortaya çıkar.
Bin tane gereksiz, fazladan döngü yinelemesi olur! Optimal değil.
Kodu, döngüyü zamanında durdurarak optimize edelim:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exists = false;
foreach ($arr as $elem) {
if ($elem == 3) {
$exists = true;
break;
}
}
var_dump($exists);
?>
Aşağıdaki kod, toplam 10'u aşana kadar
diziden kaç elemanın toplanması gerektiğini hesaplıyor.
Optimizasyonu gerçekleştirin:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$sum = 0;
$i = 1;
foreach ($arr as $elem) {
$sum += $elem;
if ($sum <= 10) {
$i++;
}
}
echo $i;
?>
Aşağıdaki kod, verilen aralıktaki çift sayıları yazdırıyor. Optimizasyonu gerçekleştirin:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0) {
echo $i;
}
}
?>
Aşağıdaki kod, aynı anda hem 2'ye
hem de 3'e bölünebilen sayıları yazdırıyor.
Optimizasyonu gerçekleştirin:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0 and $i % 3 === 0) {
echo $i;
}
}
?>