Pengoptimuman Pengulangan Operasi Berat dalam PHP
Dalam pelajaran sebelumnya, panggilan berulang fungsi sebenarnya mengambil masa yang sangat sedikit dan pengoptimuman kami akan menjimatkan tidak banyak. Walau bagaimanapun, keadaan akan menjadi lebih teruk jika kita beberapa kali membuat panggilan fungsi "berat" yang mengambil masa yang agak lama untuk dilaksanakan.
Katakan, sebagai contoh, kita mempunyai fungsi yang mencari pembahagi bagi suatu nombor:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Jelaslah, fungsi ini agak "berat". Oleh itu, adalah idea yang tidak baik untuk menulis kod seperti ini:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Sudah tentu, adalah lebih baik untuk melaksanakan operasi "berat" sekali dan merekodkan hasilnya ke dalam pembolehubah, kemudian menggunakan pembolehubah itu di tempat-tempat yang diperlukan:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Optimumkan kod di bawah:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'betul';
} else {
echo 'tidak betul';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>