Optimizimi i përsëritjes së operacioneve të rënda në PHP
Në mësimin e mëparshëm, thirrjet e përsëritura të funksioneve në fakt zënë shumë pak kohë dhe optimizimi ynë nuk do të kursejë shumë. Megjithatë, gjithçka do të jetë shumë më keq nëse disa herë bëjmë një thirrje të një funksioni "të rëndë", i cili kryhet për një kohë mjaft të gjatë.
Le të themi, për shembull, se kemi një funksion që gjen pjesëtuesit e një numri:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Është e qartë se ky funksion është mjaft "i rëndë". Prandaj, do të ishte një ide e keqe të shkruanim kodin e mëposhtëm:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Më mirë, sigurisht, është të kryhet operacioni "i rëndë" një herë dhe rezultati të shkruhet në një variabël, e pastaj të përdoret kjo variabël në vendet e nevojshme:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Optimizoni kodin e dhënë më poshtë:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'correct';
} else {
echo 'incorrect';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>