Smagu operāciju atkārtošanas optimizēšana PHP
Iepriekšējā nodarbībā atkārtoti funkciju izsaukumi patiesībā aizņem ļoti maz laika, un mūsu optimizācija ietaupīs ne pārāk daudz. Tomēr viss būs daudz sliktāk, ja mēs vairākas reizes izsauksim "smago" funkciju, kas izpildās pietiekami ilgu laiku.
Pieņemsim, ka mums piemēram, ir funkcija, kas atrod skaitļa dalītājus:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Acīmredzot, šī funkcija ir pietiekami "smaga". Tāpēc slikta ideja būtu uzrakstīt šādu kodu:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Labāk, protams, ir veikt "smago" operāciju vienu reizi un rezultātu ierakstīt mainīgajā, un tad izmantot šo mainīgo vajadzīgajās vietās:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Optimizējiet zemāk redzamo kodu:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'pareizi';
} else {
echo 'nepareizi';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>