Optimizarea repetării operațiilor grele în PHP
În lecția anterioară, apelurile repetate ale funcțiilor de fapt durează foarte puțin timp și optimizarea noastră nu va economisi foarte mult. Cu toate acestea, va fi mult mai rău dacă vom face de mai multe ori apelul unei funcții "grele", care se execută un timp destul de lung.
Să presupunem, de exemplu, că avem o funcție care găsește divizorii unui număr:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Evident, această funcție este suficient de "grele". Prin urmare, va fi o idee proastă să scriem un astfel de cod:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Mai bine, desigur, este să efectuați operațiunea "grea" o singură dată și să scrieți rezultatul într-o variabilă, apoi să utilizați această variabilă în locurile necesare:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Optimizați codul de mai jos:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'corect';
} else {
echo 'incorect';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>