Optimalisering van oortollige lusherhalings in PHP
In die volgende kode gaan 'n programmeerder na
of die getal 3 in die skikking voorkom:
<?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);
?>
Wat is verkeerd met sy oplossing? Dit lyk asof daar
geen oortollige bewerkings in die lus gedoen word nie. Die probleem
is eger dat, nadat vasgestel is
dat die getal 3 in die skikking is, die lus
steeds tot die einde van die skikking voortgaan.
Die mees onrasionele sal wees as die getal 3
iewers aan die begin van die skikking gevind word, en die skikking self
lank is, sê 1000 elemente.
Dit sal duisend nuttelose oortollige herhalings van die lus beteken!
Nie optimaal nie.
Laat ons die kode optimaliseer deur die lus betyds te stop:
<?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);
?>
Die volgende kode bereken hoeveel
elemente van die skikking opgetel moet word
vir die som om groter as 10 te word.
Voer die optimalisering uit:
<?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;
?>
Die volgende kode druk ewe getalle uit die gegewe reeks af. Voer die optimalisering uit:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0) {
echo $i;
}
}
?>
Die volgende kode druk getalle af
wat gelyktydig deur 2
en 3 deelbaar is. Voer die optimalisering uit:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0 and $i % 3 === 0) {
echo $i;
}
}
?>