Βελτιστοποίηση Επαναληπτικών Λειτουργιών σε 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>";
}
}
?>