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