Оптимизатсияи амалиётҳои даврӣ дар PHP
Ҳатто амалиёти сабук, ки дар давр такрор-такрор мешавад, метавонад манбаъҳои зиёдиро сарф кунад.
Биёед ба мисол нигарем. Бигзор ба мо массиви муайян дода шавад:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Биёед миёнаи унсурҳои ин массивро ёбем. Барои ин лозим аст, ки ҷамъи унсурҳоро ёфта, ба миқдор тақсим кунем. Бигзор баъзе барномасоз ин масъаларо бо тарзи зерин ҳал карда бошад:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Биёед мушкилоти чунин ҳалли масаларо дида бароем. Техникӣ код дуруст кор мекунад ва ҷавоби дурустро медиҳад. Масъала ин аст, ки аз назари математикӣ дуруст аст, ҳам тамоми ҷамъро бар миқдор тақсим кардан, ҳам ҳар як ҷузъро бар миқдор тақсим кардан.
Аммо, мушкили дигар пайдо мешавад. Масъала ин аст, ки мо тақсимро он қадар маротиба иҷро мекунем, ки чанд унсур дар массивҳои мо мавҷуд аст. Ва маълум мешавад, ки мо амалиётҳои зиёди зоҳиро иҷро мекунем, зеро тақсим карданро дар охир - як маротиба, тамоми ҷамъи ёфташударо тақсим кардан, мумкин буд.
Биёед коди худро оптимизатсия кунем:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Коди зерро оптимизатсия кунед:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>