Optimizacija ponavljanja težkih operacij v PHP
V prejšnji lekciji ponovni klici funkcij pravzaprav zavzamejo zelo malo časa in naša optimizacija prihrani ne zelo veliko. Vendar pa bo vse veliko slabše, če bomo večkrat klicali "težko" funkcijo, ki se izvaja dokaj dolgo časa.
Recimo, da imamo na primer funkcijo, ki poišče delitelje števila:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Očitno je, da je ta funkcija precej "težka". Zato je slaba ideja napisati takšno kodo:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Bolje je seveda izvesti "težko" operacijo enkrat in rezultat zapisati v spremenljivko, nato pa uporabiti to spremenljivko na želenih mestih:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Optimizirajte spodnjo kodo:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'pravilno';
} else {
echo 'nepravilno';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>