PHP-də Ağır Əməliyyatların Təkrarının Optimallaşdırılması
Əvvəlki dərsdə funksiyaların təkrar çağırışları əslində çox az vaxt aparır və bizim optimallaşdırmamız çox da çox qənaət etməyəcək. Lakin, biz bir neçə dəfə kifayət qədər uzun müddət icra olunan "ağır" funksiyanın çağırışını etsək, hər şey daha pisləşəcək.
Məsələn, tutaq ki, bizim ədədin bölənlərini tapan bir funksiyamız var:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Aydındır ki, bu funksiya kifayət qədər "ağırdır". Ona görə də belə bir kodu yazmaq pis fikirdir:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Əlbəttə ki, "ağır" əməliyyatı bir dəfə yerinə yetirmək və nəticəni dəyişəndə yazmaq, sonra isə bu dəyişəni lazımi yerlərdə istifadə etmək daha yaxşıdır:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Aşağıdakı kodu optimallaşdırın:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'düzdür';
} else {
echo 'səhvdir';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>