PHP-ში ციკლის ზედმეტი გამეორებების ოპტიმიზაცია
შემდეგ კოდში, რაღაც პროგრამისტი ამოწმებს,
არის თუ არა მასივში ნომერი 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);
?>
რა არის სწორი მის გადაწყვეტაში? როგორც ჩანს, ციკლში
არანაირი დამატებითი ოპერაცია არ სრულდება. პრობლემა,
თუმცა, ისაა, რომ მას შემდეგ რაც დადგინდება,
რომ ნომერი 3 არის მასივში - ციკლი
მაინც გრძელდება მასივის ბოლომდე.
ყველაზე არარაციონალური იქნება, თუ ნომერი 3
იქნება ნაპოვნი მასივის დასაწყისში, ხოლო თავად მასივი
იქნება 1000 ელემენტის სიგრძის.
მიიღება ათასი უსარგებლო ზედმეტი გამეორება
ციკლის! არაოპტიმალური.
ოპტიმიზაცია გავუკეთოთ კოდს, ციკლის დროულად გაჩერებით:
<?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);
?>
შემდეგი კოდი ითვლის, რამდენი
მასივის ელემენტის დამატებაა საჭირო,
რათა ჯამი გახდეს 10-ზე მეტი.
შეასრულეთ ოპტიმიზაცია:
<?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;
?>
შემდეგი კოდი აჩვენებს ლუწ რიცხვებს მოცემული ინტერვალიდან. შეასრულეთ ოპტიმიზაცია:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0) {
echo $i;
}
}
?>
შემდეგი კოდი აჩვენებს რიცხვებს,
რომლებიც იყოფა ერთდროულად 2-ზე
და 3-ზე. შეასრულეთ ოპტიმიზაცია:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0 and $i % 3 === 0) {
echo $i;
}
}
?>