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;
}
?>