Оптимизација понављања тешких операција у PHP
У претходној лекцији поновни позиви функција заправо заузимају врло мало времена и наша оптимизација неће уштедети много. Међутим, све ће бити много горе ако неколико пута обавимо позив "тешке" функције, која се извршава довољно дуго.
Нека, на пример, имамо функцију која проналази делиоце броја:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Очигледно је да је ова функција прилично "тешка". Зато је лоша идеја написати овакав код:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Боље је, наравно, извршити "тешку" операцију једном и резултат уписати у променљиву, а затим користити ту променљиву на потребним местима:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Оптимизујте дати код испод:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'тачно';
} else {
echo 'нетачно';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>