PHP-ში ციკლური ოპერაციების ოპტიმიზაცია
შედარებით მსუბუქმა ოპერაციამაც კი, რომელიც ციკლში მრავალჯერ მეორდება, შეიძლება დახარჯოს მნიშვნელოვანი რესურსები.
მოდით შევხედოთ მაგალითს. დავუშვათ, გვაქვს მოცემული გარკვეული მასივი:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
მოდით ვიპოვოთ ამ მასივის ელემენტების საშუალო. ამისთვის საჭიროა ვიპოვოთ ელემენტების ჯამი და გავყოთ იგი მათ რაოდენობაზე. დავუშვათ, რომელიმე პროგრამისტმა უკვე გადაჭრა ეს ამოცანა შემდეგნაირად:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
მოდით განვიხილოთ ამონახსნის პრობლემები. ტექნიკურად კოდი მუშაობს სწორად და იძლევა სწორ პასუხს. საქმე ისაა, რომ მათემატიკურად კორექტულია როგორც მთელი ჯამის გაყოფა რაოდენობაზე, ისე თითოეული წევრის ცალკე გაყოფა რაოდენობაზე.
თუმცა, ჩნდება სხვა პრობლემა. საქმე ისაა, რომ ჩვენ გაყოფის ოპერაციას შევასრულებთ იმდენჯერ, რამდენი ელემენტიცაა ჩვენს მასივში. და გამოდის, რომ ჩვენ ვაკეთებთ დიდი რაოდენობის დამატებით ოპერაციებს, ად ხომ გაყოფა შეიძლებოდა მხოლოდ ბოლოს - ერთხელ, მთელი ნაპოვნი ჯამის გაყოფით.
მოდით ოპტიმიზაცია გავუკეთოთ ჩვენს კოდს:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
გააკეთეთ ოპტიმიზაცია ქვემოთ მოცემულ კოდს:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>