⊗jsSpOtRHO 271 of 294 menu

Βελτιστοποίηση Επανάληψης Βαρέων Λειτουργιών στο JavaScript

Στο προηγούμενο μάθημα, οι επαναλαμβανόμενες κλήσεις συναρτήσεων στην πραγματικότητα απαιτούν πολύ λίγο χρόνο και η βελτιστοποίησή μας θα εξοικονομήσει όχι πολύ. Ωστόσο, όλα θα είναι πολύ χειρότερα αν κάνουμε πολλές φορές κλήση μιας "βαριάς" συνάρτησης, η οποία εκτελείται για αρκετά μεγάλο χρονικό διάστημα.

Ας υποθέσουμε, για παράδειγμα, ότι έχουμε μια συνάρτηση που βρίσκει τους διαιρέτες ενός αριθμού:

function getDivisorsSum(num) { let res = 0; for (let i = 1; i <= num; i++) { if (num % i === 0) { res += i; } } return res; }

Προφανώς, αυτή η συνάρτηση είναι αρκετά "βαριά". Επομένως, κακή ιδέα θα ήταν να γράψουμε τον ακόλουθο κώδικα:

let num = 123456; if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) { console.log('+++'); } else { console.log('---'); }

Καλύτερα, φυσικά, είναι να εκτελέσουμε τη "βαριά" λειτουργία μία φορά και να αποθηκεύσουμε το αποτέλεσμα σε μια μεταβλητή, και στη συνέχεια να χρησιμοποιήσουμε αυτή τη μεταβλητή στα απαραίτητα σημεία:

let num = 123456; let sum = getDivisorsSum(num); if (sum >= 10 && sum <= 100) { console.log('+++'); } else { console.log('---'); }

Βελτιστοποιήστε τον παρακάτω κώδικα:

let num = 1233456789; if (getSumSquare(num) >= 10 && getSumSquare(num) <= 100) { console.log('+++'); } else { console.log('---'); } function getSumSquare(num) { let digits = String(num).split(''); let sum = 0; for (let digit of digits) { sum += digit ** 2; } return sum; }
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη