Pengoptimuman Operasi Berkitar dalam PHP
Walaupun operasi yang ringan, jika diulang berkali-kali dalam gelung, boleh menggunakan banyak sumber.
Mari kita lihat contoh. Katakan kita mempunyai sebuah array:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Mari cari purata bagi elemen array ini. Untuk melakukan ini, kita perlu mencari jumlah elemen dan bahagikannya dengan kuantiti. Katakan seorang pengatur cara telah menyelesaikan masalah ini dengan cara berikut:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Mari kita kaji masalah penyelesaian sedemikian. Dari segi teknikal, kod ini berfungsi dengan betul dan memberikan jawapan yang betul. Masalahnya ialah, dari segi matematik adalah betul sama ada untuk membahagikan keseluruhan jumlah dengan kuantiti, atau untuk membahagikan setiap sebutan dengan kuantiti.
Walau bagaimanapun, timbul masalah lain. Masalahnya ialah kita akan melaksanakan pembahagian sebanyak kali yang terdapat elemen dalam array kita. Dan ternyata kita melakukan banyak operasi berlebihan, kerana pembahagian boleh dilakukan pada akhir - sekali, dengan membahagikan keseluruhan jumlah yang ditemui.
Mari kita optimumkan kod kami:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Optimumkan kod di bawah:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>