Αρκετοί αλγόριθμοι προγραμματισμού στοχεύουν στη μεγιστοποίηση της απόδοσης, αλλά κανένας μεμονωμένος αλγόριθμος δεν υπερέχει καθολικά τους άλλους σε όλα τα σενάρια. Η καλύτερη επιλογή εξαρτάται από παράγοντες όπως:
* Η φύση των καθηκόντων: Είναι όλα το ίδιο μέγεθος και προτεραιότητα; Είναι δεσμευμένοι ή CPU δεσμευμένοι; Έχουν εξαρτήσεις;
* Ο αριθμός των πόρων: Πόσοι επεξεργαστές ή πυρήνες είναι διαθέσιμοι;
* Η παρουσία προθεσμιών: Υπάρχουν δύσκολες προθεσμίες που πρέπει να πληρούνται ή είναι μόνο σημαντικές;
* Το κόστος μεταγωγής περιβάλλοντος: Οι συχνές διακόπτες περιβάλλοντος μπορούν να μειώσουν τη συνολική απόδοση.
Οι αλγόριθμοι που συχνά προσπαθούν για υψηλή απόδοση περιλαμβάνουν:
* συντομότερη εργασία πρώτα (SJF): Αυτός ο αλγόριθμος δίνει προτεραιότητα στις εργασίες με τον συντομότερο χρόνο εκτέλεσης. Είναι βέλτιστο για την ελαχιστοποίηση του μέσου χρόνου αναμονής, ο οποίος συμβάλλει έμμεσα στην υψηλότερη απόδοση εάν οι εργασίες είναι ανεξάρτητες. Ωστόσο, απαιτεί τη γνώση του χρόνου εκτέλεσης εκ των προτέρων, κάτι που δεν είναι πάντα δυνατό.
* Ο συντομότερος χρόνος πρώτα (SRTF): Μια προληπτική έκδοση του SJF. Επαναλαμβάνει συνεχώς τον εναπομένοντα χρόνο εκτέλεσης των διαδικασιών εκτέλεσης και μεταβαίνει στη συντομότερη εναπομένουσα εργασία εάν φτάσει ένα μικρότερο. Αυτό γενικά οδηγεί σε καλύτερη απόδοση από το SJF.
* ουρά ανατροφοδότησης πολλαπλών επιπέδων: Αυτός ο αλγόριθμος αποδίδει εργασίες σε διαφορετικές ουρές με βάση τα χαρακτηριστικά τους (π.χ. προτεραιότητα, χρόνος έκρηξης CPU). Προσαρμόζει δυναμικά τις προτεραιότητες των εργασιών με βάση τη συμπεριφορά τους, επιτρέποντας την ανταπόκριση και τη βελτιστοποίηση της απόδοσης.
* Στρογγυλό Robin: Αυτός ο αλγόριθμος δίνει σε κάθε εργασία μια μικρή φέτα χρόνου (κβαντικό) του χρόνου CPU. Είναι απλό και δίκαιο και γενικά παρέχει λογική απόδοση, ειδικά με πολλές σύντομες εργασίες.
* Προγραμματισμός δίκαιου μεριδίου: Αυτός ο τύπος προγραμματιστή επικεντρώνεται στη διασφάλιση ότι κάθε χρήστης ή εργασία θα λάβει δίκαιο μερίδιο των πόρων. Αν και δεν στοχεύει άμεσα στη μεγιστοποίηση της απόδοσης, ένας καλά εφαρμοσμένος προγραμματιστής δίκαιου μεριδίου μπορεί να αποτρέψει έναν χρήστη ή την εργασία να μονοπωλεί τους πόρους και έτσι να βελτιώσει τη συνολική απόδοση.
Περιορισμοί:
Η μεγιστοποίηση της απόδοσης συχνά έρχεται εις βάρος άλλων σημαντικών μετρήσεων:
* Χρόνος απόκρισης: Οι αλγόριθμοι που επικεντρώνονται αποκλειστικά στην απόδοση μπορεί να οδηγήσουν σε πολύ μεγάλους χρόνους απόκρισης για μεμονωμένες εργασίες.
* Faerness: Μερικοί αλγόριθμοι υψηλής απόδοσης μπορούν να λιμοκτονούν ορισμένες εργασίες ή χρήστες.
* Προβλεπιμότητα: Η συμπεριφορά ορισμένων αλγορίθμων που επικεντρώνονται στην απόδοση μπορεί να είναι δύσκολο να προβλεφθεί, καθιστώντας δύσκολο να εξασφαλιστεί συμφωνίες επιπέδου υπηρεσιών.
Συμπερασματικά, πολλοί αλγόριθμοι προγραμματισμού στοχεύουν στη μεγιστοποίηση της απόδοσης, αλλά ο "καλύτερος" αλγόριθμος εξαρτάται σε μεγάλο βαθμό από το συγκεκριμένο σύστημα και τις απαιτήσεις του. Συχνά πρέπει να βρεθεί ισορροπία μεταξύ της απόδοσης και άλλων μετρήσεων απόδοσης.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα