Optimalisering van Herhalende Swaar Operasies in PHP
In die vorige les het herhaalde funksie-oproepe eintlik baie min tyd geneem en ons optimalisering sal nie baie bespaar nie. Eger, alles sal baie erger wees as ons verskeie keer 'n "swaar" funksie oproep wat lank neem om uit te voer.
Laat ons byvoorbeeld 'n funksie hê wat die delers van 'n getal vind:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Dit is duidelik dat hierdie funksie redelik "swaar" is. Dus sal dit 'n slegte idee wees om so 'n kode te skryf:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Dit is beter, natuurlik, om die "swaar" operasie een keer uit te voer en die resultaat in 'n veranderlike te stoor, en dan daardie veranderlike op die nodige plekke te gebruik:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Optimaliseer die onderstaande kode:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'correct';
} else {
echo 'incorrect';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>