Επιχειρήματα για την πιθανή καλύτερη απόδοση του Fortran:
* Σχεδιασμένο για αριθμητικό υπολογισμό: Η FORTRAN σχεδιάστηκε ειδικά για επιστημονικούς και μηχανικούς υπολογισμούς. Η σύνταξη και η σημασιολογία του είναι συχνά πιο φυσικές για την έκφραση αυτών των προβλημάτων. Οι πρώτες εκδόσεις είχαν άμεση υποστήριξη για πολύπλοκες αριθμούς, λειτουργίες συστοιχίας και άλλα χαρακτηριστικά που είναι κρίσιμα για τους επιστημονικούς κώδικες.
* Βελτιστοποίηση μεταγλωττιστή: Οι μεταγλωττιστές FORTRAN έχουν ιστορικά βελτιστοποιηθεί έντονα για αριθμητικές λειτουργίες, ιδιαίτερα στη χειραγώγηση και στη βελτιστοποίηση βρόχου. Οι μεταγλωττιστές χρησιμοποιούν συχνά τεχνικές όπως το ξετυλίγματος του βρόχου, ο διανυσματικός και ο αυτόματος παραλληλισμός πιο επιθετικά στο FORTRAN. Αυτές οι βελτιστοποιήσεις εκμεταλλεύονται τις δυνατότητες υλικού όπως οι οδηγίες SIMD (ενιαία οδηγία, πολλαπλά δεδομένα) πιο αποτελεσματικά.
* υποθέσεις ψευδώνυμου: Οι μεταγλωττιστές FORTRAN μπορούν συχνά να κάνουν ισχυρότερες υποθέσεις σχετικά με το ψευδώνυμο μνήμης (όταν δύο δείκτες μπορούν να αναφέρονται στην ίδια θέση μνήμης). Το FORTRAN περιορίζει το ψευδώνυμο περισσότερο από προεπιλογή από το C. Αυτό επιτρέπει στον μεταγλωττιστή να αναδιατάξει και να βελτιστοποιήσει τον κώδικα πιο επιθετικά χωρίς να διακινδυνεύσει τα λανθασμένα αποτελέσματα. Στο C, πρέπει να χρησιμοποιήσετε τη λέξη -κλειδί `περιορίζουν 'για να επιτύχετε παρόμοιες υποθέσεις ψευδαίσθησης.
* ώριμες βιβλιοθήκες: Το FORTRAN έχει μακρά ιστορία και πολλές εξαιρετικά βελτιστοποιημένες αριθμητικές βιβλιοθήκες όπως το BLAS (βασικά γραμμικά υποπρογράμματα άλγεβρας), το Lapack (γραμμικό πακέτο άλγεβρας) και το FFTW (ταχύτερος μετασχηματισμός Fourier στη Δύση) γράφονται στο FORTRAN ή στο FORTRAN Interfaces. Ενώ αυτές οι βιβλιοθήκες είναι επίσης προσβάσιμες από το C, η χρήση τους απευθείας από το FORTRAN μπορεί μερικές φορές να οδηγήσει σε καλύτερη ολοκλήρωση και λιγότερα γενικά έξοδα.
Επιχειρήματα για δυνητικά καλύτερη απόδοση του C (ή τουλάχιστον ανταγωνιστικότητα):
* Έλεγχος χαμηλού επιπέδου: Το C προσφέρει πολύ λεπτότερο έλεγχο της διαχείρισης μνήμης και των πόρων υλικού. Οι εξειδικευμένοι προγραμματιστές μπορούν να εκμεταλλευτούν αυτόν τον έλεγχο για να βελτιστοποιήσουν τον κώδικα για συγκεκριμένες αρχιτεκτονικές, ενδεχομένως να ξεπεράσουν το FORTRAN σε ορισμένες περιπτώσεις.
* Σύγχρονοι μεταγλωττιστές: Οι σύγχρονοι μεταγλωττιστές C είναι επίσης εξαιρετικά εξελιγμένοι και ικανοί να εκτελούν πολλές από τις ίδιες βελτιστοποιήσεις με τους μεταγλωττιστές Fortran. Το χάσμα στη βελτιστοποίηση του μεταγλωττιστή έχει μειωθεί σημαντικά κατά τη διάρκεια των ετών.
* Βιβλιοθήκες διάνυσμα: Το C διαθέτει επίσης βιβλιοθήκες που παρέχουν πρόσβαση σε οδηγίες SIMD, όπως τα εγγενή Intel και το νέον του ARM. Η χρήση αυτών απαιτεί περισσότερη χειρωνακτική προσπάθεια, αλλά μπορεί να οδηγήσει σε εξαιρετική απόδοση.
* ευρύτερο οικοσύστημα: Το C έχει ένα πολύ μεγαλύτερο και πιο ποικίλο οικοσύστημα βιβλιοθηκών και εργαλείων. Αυτό μπορεί να είναι ένα πλεονέκτημα για εργασίες που υπερβαίνουν τον καθαρό αριθμητικό υπολογισμό, όπως η επεξεργασία δεδομένων, η I/O και η διασύνδεση με άλλα συστήματα. Το C είναι συχνά μια καλύτερη επιλογή όταν πρέπει να ενσωματώσετε τον αριθμητικό κώδικα με άλλα μέρη ενός μεγαλύτερου συστήματος.
* Διαχείριση μνήμης: Ενώ η σιωπηρή διαχείριση της μνήμης του Fortran είναι συχνά ευκολότερη στη χρήση, η ρητή διαχείριση μνήμης της C (με το «Malloc» και το «Free») * μπορεί να είναι πιο αποτελεσματικό σε συγκεκριμένα σενάρια, ειδικά όταν ασχολείται με σύνθετες δομές δεδομένων. (Αλλά κάνει επίσης διαρροές μνήμης και άλλα σφάλματα που σχετίζονται με τη μνήμη πολύ πιο πιθανό).
Βασικές εκτιμήσεις:
* Η ικανότητα του προγραμματιστή: Ο πιο σημαντικός παράγοντας είναι συχνά η ικανότητα του προγραμματιστή. Ένα καλά γραπτό πρόγραμμα C μπορεί συχνά να ξεπεράσει ένα ανεπαρκώς γραμμένο πρόγραμμα FORTRAN και αντίστροφα.
* Το συγκεκριμένο πρόβλημα: Ο τύπος του αριθμητικού προβλήματος που επιλύεται είναι κρίσιμος. Το FORTRAN μπορεί να είναι καλύτερα κατάλληλο για μεγάλους υπολογισμούς που βασίζονται σε συστοιχίες, ενώ το C μπορεί να είναι πιο αποτελεσματικό για εργασίες που απαιτούν χειρισμό μνήμης λεπτών με λεπτόκοκκο ή σύνθετες δομές δεδομένων.
* Οι σημαίες μεταγλωττιστή και βελτιστοποίησης: Ο χρησιμοποιούμενος μεταγλωττιστής και οι ενεργοποιημένες σημαίες βελτιστοποίησης μπορούν να έχουν σημαντικό αντίκτυπο στην απόδοση. Πειραματιστείτε με διαφορετικούς μεταγλωττιστές και ρυθμίσεις βελτιστοποίησης για να βρείτε τον καλύτερο συνδυασμό για τον συγκεκριμένο κωδικό και το υλικό σας.
* Κωδικός πολυπλοκότητα: Ενώ η βελτιστοποιημένη απόδοση είναι ο στόχος, η σύνταξη του κωδικού καλύτερης απόδοσης συχνά δεν είναι πρακτικός λόγω των χρονικών περιορισμών. Ως εκ τούτου, η επιλογή μεταξύ C και Fortran συχνά εξαρτάται από την αντιστάθμιση μεταξύ της ακατέργαστης απόδοσης και της παραγωγικότητας των προγραμματιστών.
Συνοπτικά:
* Ιστορικά, και για ορισμένες συγκεκριμένες επιστημονικές υπολογιστικές εργασίες, η Fortran κρατούσε άκρη απόδοσης, κυρίως λόγω καλύτερης βελτιστοποίησης του μεταγλωττιστή για αριθμητικό κώδικα και λιγότερα προβλήματα ψευδαισθήσεων. Πολλές παλαιότερες (ακόμη και μερικές νεότερες) επιστημονικές βιβλιοθήκες είναι γραμμένες στο Fortran.
* Οι σύγχρονοι μεταγλωττιστές C προσελκύουν και με προσεκτική κωδικοποίηση και τη χρήση των βιβλιοθηκών διανυσμάτων, το C μπορεί να επιτύχει συγκρίσιμη ή ακόμα και ανώτερη απόδοση, ειδικά για προβλήματα που απαιτούν έλεγχο χαμηλού επιπέδου ή ενσωμάτωση με άλλα συστήματα.
* Η επιλογή μεταξύ Fortran και C θα πρέπει να βασίζεται σε μια λεπτομερή αξιολόγηση του συγκεκριμένου προβλήματος, στην εμπειρία του προγραμματιστή, στις διαθέσιμες βιβλιοθήκες και στο επιθυμητό επίπεδο απόδοσης.
Επομένως, δεν υπάρχει οριστικός "νικητής". Είναι καλύτερο να συγκρίνετε και τις δύο γλώσσες για τη συγκεκριμένη εφαρμογή σας για να προσδιορίσετε ποια παρέχει την καλύτερη απόδοση στο συγκεκριμένο πλαίσιο σας. Εξετάστε το προφίλ του κώδικα σας για να προσδιορίσετε τα σημεία συμφόρησης και να εστιάσετε τις προσπάθειες βελτιστοποίησης όπου θα έχουν το μεγαλύτερο αντίκτυπο.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα