Acovea

Screenshot Λογισμικό:
Acovea
Στοιχεία Λογισμικού:
Εκδοχή: 1.0.1
Ανεβάστε ημερομηνία: 3 Jun 15
Προγραμματιστής: Scott Robert Ladd
Άδεια: Δωρεάν
Δημοτικότητα: 176

Rating: 2.7/5 (Total Votes: 3)

Acovea εφαρμόζει ένα γενετικό αλγόριθμο για την εύρεση των "καλύτερων" επιλογές για την κατάρτιση προγραμμάτων με το ΣΣΚ C και C ++ μεταγλωττιστές.
ACOVEA (ανάλυση των επιλογών μεταγλώττισης μέσω εξελικτικού αλγορίθμου) υλοποιεί ένα γενετικό αλγόριθμο για να βρείτε τις «καλύτερες» επιλογές για την κατάρτιση προγραμμάτων με την GNU Compiler Collection (GCC) C και C ++ μεταγλωττιστές.
"Best", στο πλαίσιο αυτό, ορίζεται ως τα επιλογές που παράγουν την ταχύτερη εκτελέσιμο πρόγραμμα από ένα δεδομένο πηγαίο κώδικα. Acovea είναι ένα C ++ πλαίσιο που μπορεί να επεκταθεί και να δοκιμάσει άλλες γλώσσες προγραμματισμού και μεταγλωττιστές μη-ΣΣΚ.
Οραματίζομαι Acovea ως εργαλείο βελτιστοποίησης, παρόμοιο σκοπό του χαρακτηρισμού. Παραδοσιακά λειτουργία σε επίπεδο χαρακτηριστικών προσδιορίζει τους αλγορίθμους με τη μεγαλύτερη επιρροή στην απόδοση ενός προγράμματος? Acovea εφαρμόζεται στη συνέχεια σε αυτές τις αλγόριθμους για να βρείτε τις σημαίες compiler και τις επιλογές που δημιουργούν την ταχύτερη κώδικα.
Acovea είναι επίσης χρήσιμη για τη δοκιμή των συνδυασμών σημαίες για απαισιόδοξη αλληλεπιδράσεων, και για τον έλεγχο της αξιοπιστίας του μεταγλωττιστή.
Σύγχρονη λογισμικό είναι δύσκολο να κατανοήσουν και να επαληθεύουν με παραδοσιακά μέσα. Εκατομμύρια γραμμές κώδικα παράγουν εφαρμογές που περιέχουν περίπλοκες αλληλεπιδράσεις, αψηφώντας απλή περιγραφή ή έρευνα ωμής βίας.
Μια οργανωμένη, ντετερμινιστική προσέγγιση για τις δοκιμές βασίζεται στην ανθρώπινη δοκιμαστές να οραματίζονται κάθε πιθανό συνδυασμό των δράσεων - μια μη ρεαλιστική πρόταση δεδομένη την πολυπλοκότητα του λογισμικού. Ωστόσο, παρά την πολυπλοκότητα, χρειαζόμαστε απαντήσεις σε σημαντικά ερωτήματα για τη σύγχρονη, λογισμικού μεγάλης κλίμακας.
Τι είδους σημαντικά θέματα; Σκεφτείτε την συλλογή μεταγλωττιστών GNU. Γράφω τα άρθρα που αναφοράς παραγωγή κώδικα, ένα έργο γεμάτο με δυσκολίες λόγω των μυριάδες επιλογές που παρέχονται από διαφορετικούς συντάκτες. Για τα σημεία αναφοράς μου για να έχει κάποιο νόημα, θα πρέπει να γνωρίζουν ποιος συνδυασμός των επιλογών παράγει την ταχύτερη κώδικα για μια συγκεκριμένη εφαρμογή.
Βρίσκοντας το "καλύτερο" σύνολο επιλογών ακούγεται σαν μια απλή εργασία, με δεδομένη την έκταση της τεκμηρίωσης του ΣΣΚ και η συμβατική σοφία της κοινότητας των προγραμματιστών του ΣΣΚ. Αχ, αν ήταν μόνο τόσο εύκολο! Η τεκμηρίωση του ΣΣΚ, ενώ εκτεταμένες, είναι επίσης ειλικρινά ασαφής.
Εκτιμώ αυτό το στυλ της τεκμηρίωσης? σε αντίθεση με πολλούς εμπορικούς προμηθευτές, οι οποίοι κάνουν την απόλυτη δηλώσεις σχετικά με την "ποιότητα" των προϊόντων τους, documenters ΣΣΚ παραδέχονται οι αβεβαιότητες για το πώς διάφορες επιλογές αλλάξει παραγωγή κώδικα. Μάλιστα, η παραγωγή κώδικα εξαρτάται εξ ολοκλήρου από τον τύπο της εφαρμογής που καταρτίζονται και την πλατφόρμα στόχου. Μια επιλογή που παράγει γρήγορα εκτελέσιμο κώδικα για ένα πηγαίο κώδικα μπορεί να είναι επιζήμια για την απόδοση κάποιου άλλου προγράμματος.
«Συμβατική σοφία» φτάνει στο inbox μου κάθε φορά που δημοσιεύει ένα νέο άρθρο. Ξεκινώντας από το ευγενικό να το επίμονη στη αγενής, αυτά τα e-mails περιέχουν αντιφατικές προτάσεις για την παραγωγή γρήγορα κώδικα.
Στη συντριπτική πλειονότητα των περιπτώσεων, όπως ανεπίσημα ισχυρισμοί δεν έχουν καμία επίσημη απόδειξη της ισχύος τους, και, τις περισσότερες φορές δεν είναι, η προτεινόμενη «βελτίωση» είναι αναποτελεσματικά ή επιζήμια. Έχει γίνει ολοένα και πιο προφανές ότι κανείς δεν --myself περιλαμβάνονται - δεν ξέρει ακριβώς πώς όλες αυτές οι επιλογές του ΣΣΚ να συνεργαστούν στην δημιουργία του κώδικα του προγράμματος.
Ζητώ το Άγιο Δισκοπότηρο της βελτιστοποίησης - αλλά τι ακριβώς είναι η βελτιστοποίηση; Η κατανόηση του προβλήματος είναι το πρώτο βήμα για την εξεύρεση λύσης.
Βελτιστοποίηση επιχειρεί να παράγει το "καλύτερο" κώδικα μηχανής από τον πηγαίο κώδικα. "Best" σημαίνει διαφορετικά πράγματα σε διαφορετικές εφαρμογές? ένα φτυάρια βάση δεδομένων κομμάτια πληροφοριών, ενώ μια επιστημονική εφαρμογή, ασχολείται με γρήγορη και ακριβή αποτελέσματα? το πρώτο μέλημα για ένα ενσωματωμένο σύστημα μπορεί να είναι το μέγεθος κώδικα.
Και είναι πολύ πιθανό ότι οι μικρές κώδικας είναι γρήγορο, ή γρήγορα κωδικό ακριβή. Βελτιστοποίηση απέχει πολύ από το να είναι μια ακριβής επιστήμη, δεδομένης της ποικιλίας του υλικού και λογισμικού.
Ένας αλγόριθμος βελτιστοποίησης μπορεί να είναι τόσο απλή όσο η αφαίρεση ενός βρόχου αμετάβλητες, ή τόσο σύνθετο όσο εξετάζοντας ένα ολόκληρο πρόγραμμα για την εξάλειψη της παγκόσμιας κοινής υπο-εκφράσεις. Πολλές βελτιστοποιήσεις αλλάξει ό, τι ο προγραμματιστής έγραψε σε μια πιο αποτελεσματική μορφή, που παράγουν το ίδιο αποτέλεσμα, ενώ αλλάζοντας βασικές λεπτομέρειες για την αποτελεσματικότητα? άλλα "βελτιστοποιήσεις" κώδικας προϊόντα που χρησιμοποιεί ειδικά χαρακτηριστικά του υποκείμενου υλικού, όπως οι δέσμες ειδικών οδηγιών.
Αρχιτεκτονικές μνήμης, αγωγών, εντός και εκτός chip μνήμης cache - όλα επηρεάζουν την απόδοση του κώδικα με τρόπους που δεν είναι προφανές σε προγραμματιστές που χρησιμοποιούν μια γλώσσα υψηλού επιπέδου. Μια βελτιστοποίησης που μπορεί να φαίνεται να παράγει πιο γρήγορα κώδικα μπορεί, στην πραγματικότητα, δημιουργούν μεγάλες κώδικα που προκαλεί περισσότερο κρυφής μνήμης, έτσι εξευτελιστική απόδοση.
Ακόμη και το καλύτερο χέρι συντονισμένοι κώδικα C περιέχει περιοχές της ερμηνείας? δεν υπάρχει απόλυτο, ένα-προς-ένα αντιστοιχία μεταξύ των δηλώσεων C και εντολές μηχανής. Σχεδόν οποιαδήποτε ακολουθία κώδικα μπορούν να συγκεντρώνονται σε διαφορετικά - αλλά λειτουργικά ισοδύναμο - εντολή μηχανής ρέματα με διαφορετικά μεγέθη και χαρακτηριστικά απόδοσης.
Εσωτερική επένδυση που λειτουργεί είναι ένα κλασικό παράδειγμα αυτού του φαινομένου: την αντικατάσταση μιας κλήσης σε συνάρτηση με τον ίδιο τον κώδικα λειτουργίας μπορεί να παράγει ένα πιο γρήγορο πρόγραμμα, αλλά μπορεί επίσης να αυξήσει το μέγεθος του προγράμματος. Αύξηση του μεγέθους του προγράμματος, μπορούν, με τη σειρά του, εμποδίζει έναν αλγόριθμο από την τοποθέτηση στο εσωτερικό της κρυφής μνήμης υψηλής ταχύτητας, επιβραδύνοντας έτσι ένα πρόγραμμα λόγω της κρυφής μνήμης.
Παρατηρήστε τη χρήση μου της λέξης νυφίτσα "μπορεί" - εσωτερική επένδυση που μικρές λειτουργίες επιτρέπει μερικές φορές άλλους αλγορίθμους βελτιστοποίησης την ευκαιρία να βελτιώσουν περαιτέρω κώδικα για τις τοπικές συνθήκες, παράγει ταχύτερα και μικρότερα κώδικα.
Βελτιστοποίησης δεν είναι απλή ή προφανής, και συνδυασμοί των αλγορίθμων μπορεί να οδηγήσει σε μη αναμενόμενα αποτελέσματα. Πράγμα που με φέρνει πίσω στο θέμα: Για οποιαδήποτε εφαρμογή, ποιες είναι οι πιο αποτελεσματικές επιλογές βελτιστοποίησης;
Τι νέο υπάρχει σε αυτήν την έκδοση:
· Μικρές αλλαγές στην μη-ελεύθερη άδεια.
· Έχει προστεθεί υποστήριξη για τις τελευταίες εκδόσεις του libcoyotl και libevocosm.

Παρόμοια λογισμικά

Άλλο λογισμικό του προγραμματιστή Scott Robert Ladd

Acovea/GTK
Acovea/GTK

3 Jun 15

Σχόλια για Acovea

Τα σχόλια δεν βρέθηκε
προσθήκη σχολίου
Ενεργοποιήστε τις εικόνες!
Αναζήτηση ανά κατηγορία