Optymalizacja zbędnych przejść pętli w PHP
W następującym kodzie pewien programista sprawdza,
czy w tablicy znajduje się liczba 3:
<?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);
?>
Co jest nie tak z jego rozwiązaniem? Wydaje się, że żadnych
zbędnych operacji w pętli nie wykonuje. Problem
jednak polega na tym, że po tym, jak ustalono,
że liczba 3 znajduje się w tablicy - pętla
i tak kręci się dalej do końca tablicy.
Nieracjonalne będzie najbardziej, jeśli liczba 3
zostanie znaleziona gdzieś na początku tablicy, a sama tablica
będzie miała długość, powiedzmy, 1000 elementów.
Okaże się, że tysiąc bezużytecznych, zbędnych iteracji
pętli! Nieoptymalnie.
Zoptymalizujmy kod, zatrzymując pętlę w odpowiednim momencie:
<?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);
?>
Następujący kod oblicza, ile
elementów tablicy trzeba zsumować,
aby suma stała się większa niż 10.
Wykonaj optymalizację:
<?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;
?>
Następujący kod wypisuje liczby parzyste z zadanego przedziału. Wykonaj optymalizację:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0) {
echo $i;
}
}
?>
Następujący kod wypisuje liczby
które dzielą się jednocześnie przez 2
i przez 3. Wykonaj optymalizację:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0 and $i % 3 === 0) {
echo $i;
}
}
?>