Pengoptimuman Lepasan Gelung Berlebihan dalam PHP
Dalam kod berikut, seorang pengaturcara menyemak
sama ada nombor 3 wujud dalam array:
<?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);
?>
Apa yang salah dengan penyelesaiannya? Nampaknya tiada
operasi berlebihan dilakukan dalam gelung. Masalahnya,
bagaimanapun, ialah selepas ditentukan
bahawa nombor 3 wujud dalam array - gelung
masih berterusan hingga akhir array.
Yang paling tidak rasional adalah jika nombor 3
ditemui di suatu tempat di awal array, manakala array itu sendiri
panjangnya, katakan, 1000 elemen.
Ini akan menghasilkan seribu lelaran gelung
berlebihan yang tidak berguna! Tidak optimum.
Mari optimumkan kod dengan menghentikan gelung pada masa yang tepat:
<?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);
?>
Kod berikut mengira berapa banyak
elemen array yang perlu ditambah,
supaya jumlahnya menjadi lebih besar daripada 10.
Laksanakan pengoptimuman:
<?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;
?>
Kod berikut mengeluarkan nombor genap dari julat yang diberikan. Laksanakan pengoptimuman:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0) {
echo $i;
}
}
?>
Kod berikut mengeluarkan nombor
yang boleh dibahagi dengan 2
dan 3 secara serentak. Laksanakan pengoptimuman:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0 and $i % 3 === 0) {
echo $i;
}
}
?>