Optimasi Pengulangan Operasi Berat di PHP
Dalam pelajaran sebelumnya, pemanggilan fungsi berulang sebenarnya memakan waktu sangat sedikit dan optimasi kita tidak akan menghemat banyak. Namun, segala sesuatu akan menjadi jauh lebih buruk jika kita beberapa kali melakukan panggilan fungsi "berat" yang dieksekusi dalam waktu yang cukup lama.
Misalnya, kita memiliki fungsi yang menemukan pembagi angka:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Jelas, fungsi ini cukup "berat". Oleh karena itu, ide yang buruk adalah menulis kode seperti ini:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Tentu saja, lebih baik melakukan operasi "berat" sekali saja dan mencatat hasilnya ke dalam variabel, lalu menggunakan variabel ini di tempat yang dibutuhkan:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Optimalkan kode di bawah ini:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'benar';
} else {
echo 'salah';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>