Skip to main content

Τι είναι η βελτιστοποίηση του προγράμματος;

Η βελτιστοποίηση του προγράμματος είναι η διαδικασία τροποποίησης ενός προγράμματος υπολογιστή με τρόπο που προκαλεί την εκτέλεση του προγράμματος ταχύτερα, καταναλώνουν λιγότερους πόρους ή γενικά λειτουργεί με υψηλότερο επίπεδο αποτελεσματικότητας.Το έργο της βελτιστοποίησης μπορεί να εκτελεστεί αυτόματα από ορισμένους μεταγλωττιστές γλωσσών προγραμματισμού, σκόπιμα χρησιμοποιώντας ένα πρόγραμμα βελτιστοποίησης ή χειροκίνητα από προγραμματιστές που περνούν από τον πηγαίο κώδικα και προσπαθούν να κάνουν συγκεκριμένες βελτιώσεις.Σε γενικές γραμμές, η βελτιστοποίηση του προγράμματος πραγματοποιείται με ένα συγκεκριμένο τέλος, επειδή υπάρχουν πολύ λίγες γενικές βελτιστοποιήσεις που μπορούν να γίνουν σε ένα πρόγραμμα που δεν μειώνει κατά κάποιο τρόπο την βελτιστοποιημένη κατάσταση ενός άλλου τμήματος του προγράμματος, που σημαίνει ότι ένα πρόγραμμα συνήθως μπορείΒελτιστοποιήστε για ταχύτητα ή χρήση πόρων, αλλά συνήθως όχι και τα δύο.Μια επιπλοκή που μπορεί να συμβεί με ορισμένους τύπους βελτιστοποίησης είναι ότι πολλές γλώσσες προγραμματισμού υψηλού επιπέδου παρέχουν ένα τόσο μεγάλο επίπεδο αφαίρεσης μεταξύ του εγγενούς κώδικα και της γλώσσας του υπολογιστή που η βελτιστοποίηση μπορεί να είναι δύσκολη ή αδύνατη να εφαρμοστεί σε όλες τις πλατφόρμες σε όλες τις περιπτώσεις, ειδικά μεΟι ερμηνευμένες γλώσσες που χρησιμοποιούν τη συλλογή Just-in-Time (JIT).

Μια σημαντική ιδέα στη βελτιστοποίηση του προγράμματος είναι η ιδέα ότι η βελτιστοποίηση συνήθως έρχεται με κάποια τιμή.Ένα παράδειγμα αυτού είναι ότι, όταν ένα κομμάτι κώδικα είναι βελτιστοποιημένο για να τρέξει πιο γρήγορα, η αύξηση της ταχύτητας θα μπορούσε να έρθει στην τιμή της αναγνωσιμότητας κώδικα, της χρήσης μνήμης, της ευελιξίας του προγράμματος ή ενός αριθμού άλλων δαπανών.Αυτό σημαίνει ότι η βελτιστοποίηση του προγράμματος πρέπει να είναι μια στοχοθετημένη διαδικασία, με σκοπό να γίνει μια πτυχή ενός προγράμματος να λειτουργεί με καλύτερο τρόπο, ενώ είναι πρόθυμος να θυσιάσει την αποτελεσματικότητα άλλων πτυχών.

Διαφορετικοί τύποι βελτιστοποίησης του προγράμματος μπορούν να πραγματοποιηθούν σε διαφορετικά στάδιαΑνάπτυξη προγράμματος.Κατά τη διάρκεια του σχεδιασμού, η ευρεία βελτιστοποίηση μπορεί να γίνει με τη διασφάλιση ενός προγράμματος φαίνεται να λειτουργεί αποτελεσματικά.Όταν εργάζεστε με τον πραγματικό πηγαίο κώδικα, οι βελτιστοποιήσεις μπορεί να περιλαμβάνουν τη διασφάλιση ότι δεν υπάρχουν εξωτερικές εντολές, επαναλαμβανόμενες κλήσεις ή κακώς γραπτές λειτουργίες.Κατά τη σύνταξη, πολλές βελτιστοποιήσεις εκτελούνται αυτόματα από τον μεταγλωττιστή και μπορούν να καθοδηγούνται μέσω της χρήσης διαφορετικών διακόπτη μεταγλωττιστή ή οδηγιών από τον προγραμματιστή.

Αυτόματες βελτιστοποιήσεις, όπως μπορεί να συμβεί με πρόγραμμα βελτιστοποίησης μεταγλωττιστή ή αφοσίωσης, συχνά μπορεί να περιλαμβάνει κόλπα που είναιΠάρα πολύ περίπλοκο για να είναι πρακτικό για τους ανθρώπινους προγραμματιστές.Αυτό μπορεί να περιλαμβάνει μετακίνηση οδηγιών σε ένα πρόγραμμα, έτσι ώστε να εκτελούνται από τη σειρά αρχικά γραμμένη αλλά με πιο αποτελεσματικό τρόπο για τον επεξεργαστή.Μπορεί επίσης να περιλαμβάνει σκόπιμα μετατόπιση πόρων, όπως μπλοκ μνήμης, ώστε να μπορούν να έχουν πρόσβαση ταχύτερα.Η περισσότερη βελτιστοποίηση του προγράμματος εμφανίζεται αυτόματα στο επίπεδο του μεταγλωττιστή.

Μια επιπλοκή με επαναλαμβανόμενη ή επιθετική βελτιστοποίηση προγράμματος είναι ότι, όταν ένα πρόγραμμα έχει τροποποιηθεί για να τρέξει πιο αποτελεσματικά, γενικά γίνεται πιο δύσκολο να τροποποιηθεί για άλλους σκοπούς, όπως η προσθήκη λειτουργικότητας ήΔιόρθωση σφαλμάτων.Αυτό μπορεί να συμβεί όταν οι βελτιστοποιήσεις αρχίζουν να κλειδώνουν σε καθορισμένες συμπεριφορές προγράμματος που δεν αλλάζουν εύκολα ή προσαρμοσμένες σε νέο κώδικα χωρίς να απαιτείται να ανατραπεί όλες οι βελτιστοποιήσεις.Ένα μεγαλύτερο ζήτημα είναι ότι, σε πολλές περιπτώσεις, ένα βελτιστοποιημένο πρόγραμμα γίνεται λιγότερο αναγνώσιμο από τον άνθρωπο, επειδή χρησιμοποιούνται κόλπα και συντομεύσεις αντί μόνο για συνοπτικές εντολές και κλασσικές δομές ελέγχου.Για τους λόγους αυτούς, υπάρχει συχνά ένα επίπεδο βελτιστοποίησης του προγράμματος στο οποίο είναι αποδεκτό να σταματήσουμε, παρόλο που οι δραστικές τροποποιήσεις κώδικα μπορεί να κάνουν ένα πρόγραμμα να λειτουργεί ελαφρώς πιο αποτελεσματικά.