PHP'de Ağır İşlemlerin Tekrarını Optimize Etme
Önceki derste, fonksiyonların tekrarlanan çağrıları aslında çok az zaman alıyordu ve bizim optimizasyonumuz çok fazla tasarruf sağlamıyordu. Ancak, yeterince uzun süre çalışan "ağır" bir fonksiyonu birkaç kez çağırırsak, her şey çok daha kötü olacaktır.
Örneğin, bir sayının bölenlerini bulan bir fonksiyonumuz olduğunu varsayalım:
<?php
function getDivisors($num) {
$result = [];
for ($i = 1; $i <= $num; $i++) {
if ($num % $i == 0) {
$result[] = $i;
}
}
return $result;
}
?>
Açıkçası, bu fonksiyon oldukça "ağır". Bu nedenle, şu şekilde bir kod yazmak kötü bir fikir olur:
<?php
$num = 123456;
if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) {
} else {
}
?>
Elbette, "ağır" işlemi bir kez yapıp sonucu bir değişkene kaydetmek, ardından bu değişkeni gerekli yerlerde kullanmak daha iyidir:
<?php
$num = 123456;
$sum = array_sum(getDivisors($num));
if ($sum >= 10 and $sum <= 100) {
} else {
}
?>
Aşağıda verilen kodu optimize edin:
<?php
$num = 1233456789;
if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) {
echo 'doğru';
} else {
echo 'yanlış';
}
function getSumSquare($num) {
$digits = explode('', $num);
$sum = 0;
foreach ($digits as $digit) {
$sum += $digit * $digit;
}
return $digit;
}
?>