|
|
Δημοσιεύτηκε στις 15/2/2024 5:17:46 μ.μ.
|
|
|
|

Ορολογία
CLI: Το Common Language Infrastructure είναι μια προδιαγραφή στο πλαίσιο .NET που ορίζει έναν χρόνο εκτέλεσης μεταξύ αρχιτεκτονικών αγνωστικιστή γλώσσας. Επομένως, μπορούμε να αναπτύξουμε λογισμικό σε διάφορες γλώσσες υψηλού επιπέδου σύμφωνα με τις προδιαγραφές που μπορεί να εκτελεστεί σε διαφορετικές αρχιτεκτονικές υπολογιστών χωρίς τροποποίηση
CLR: Χρόνος εκτέλεσης κοινής γλώσσας. είναι μια προδιαγραφή που διασφαλίζει ότι το περιβάλλον λειτουργίας είναι ανεξάρτητο από τη γλώσσα και δια-αρχιτεκτονικό
CTS: Σύστημα κοινού τύπου
CLS: Προδιαγραφές κοινής γλώσσας
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
Το IL: Immediate Language Intermediate Language, Advanced Language Compiler μεταγλωττίζει τον πηγαίο κώδικα των προχωρημένων γλωσσών σε ενδιάμεσες γλώσσες.
JIT: Το Just In Time Compiler μεταγλωττίζει μια ενδιάμεση γλώσσα σε κώδικα μηχανής που μπορεί να κατανοήσει ένας υπολογιστής, ο οποίος στη συνέχεια μπορεί να εκτελεστεί
Ο πηγαίος κώδικας μεταγλωττίζεται σε IL από τον μεταγλωττιστή C# (δηλαδή, προγράμματα, dll, exes, κ.λπ.). Το CLR φορτώνει αυτά τα IL, τα μεταγλωττίζει σε κώδικα μηχανής μέσω JIT και τελικά εκτελείται, όπως φαίνεται στο παρακάτω σχήμα:
Το JIT (Just-in-time compiler) μεταγλωττίζεται εν κινήσει
Ο μεταγλωττιστής just-in-time (JIT) είναι μέρος του Common Language Runtime (CLR) στο .NET και είναι υπεύθυνος για τη διαχείριση του αρχείου . .NET, ανεξάρτητα από οποιοδήποτε . Γλώσσα προγραμματισμού .NET. Οι μεταγλωττιστές για συγκεκριμένες γλώσσες μετατρέπουν τον πηγαίο κώδικα σε ενδιάμεσες γλώσσες. Αυτή η ενδιάμεση γλώσσα στη συνέχεια μετατρέπεται σε κώδικα μηχανής από έναν μεταγλωττιστή just-in-time (JIT). Αυτός ο κώδικας υπολογιστή είναι συγκεκριμένος για το περιβάλλον υπολογιστή στο οποίο εκτελείται ο μεταγλωττιστής JIT. Εργασία μεταγλωττιστή JIT: Οι μεταγλωττιστές JIT πρέπει να επιταχύνουν την εκτέλεση κώδικα και να παρέχουν υποστήριξη για πολλαπλές πλατφόρμες. Ετσι δουλευει:
Ο μεταγλωττιστής JIT μετατρέπει την ενδιάμεση γλώσσα της Microsoft (MSIL) ή την κοινή ενδιάμεση γλώσσα (CIL) σε κώδικα μηχανής. Αυτό γίνεται πριν από την εκτέλεση MSIL ή CIL. Το MSIL μετατρέπεται σε κώδικα μηχανής όπως απαιτείται, δηλαδή, ο μεταγλωττιστής JIT μεταγλωττίζει MSIL ή CIL όπως απαιτείται, αντί να μεταγλωττίζει ολόκληρο τον κώδικα. Αποθηκεύστε το μεταγλωττισμένο MSIL ή CIL έτσι ώστε να μπορεί να χρησιμοποιηθεί για επόμενες κλήσεις, εάν χρειαστεί.
Πλεονεκτήματα JIT:
- Μπορεί να μεταγλωττιστεί και να δημιουργηθεί σε πραγματικό χρόνο σύμφωνα με την τρέχουσα κατάσταση υλικού
- Η βέλτιστη ακολουθία εντολών του μηχανήματος μπορεί να δημιουργηθεί σύμφωνα με την τρέχουσα λειτουργία του προγράμματος
- Όταν ένα πρόγραμμα χρειάζεται να υποστηρίζει δυναμική σύνδεση, μπορεί να χρησιμοποιήσει μόνο τη μέθοδο μεταγλώττισης JIT
- Ο κώδικας μπορεί να προσαρμοστεί ανάλογα με την πραγματική κατάσταση της μνήμης στη διαδικασία για καλύτερη χρήση της μνήμης
Μειονεκτήματα JIT:
- Η μεταγλώττιση απαιτεί τους πόρους του χρόνου εκτέλεσης του χρόνου εκτέλεσης, γεγονός που προκαλεί τον τραυλισμό της διαδικασίας κατά την εκτέλεση
- Η μεταγλώττιση απαιτεί χρόνο εκτέλεσης και ορισμένες βελτιστοποιήσεις μεταγλώττισης κώδικα δεν μπορούν να υποστηριχθούν πλήρως, επομένως είναι απαραίτητο να εξισορροπηθεί η ευχέρεια και ο χρόνος
- Η προετοιμασία της μεταγλώττισης και ο εντοπισμός των μεθόδων που χρησιμοποιούνται συχνά είναι χρονοβόρα και η αρχική μεταγλώττιση δεν επιτυγχάνει την υψηλότερη απόδοση
Το AOT (Front-of-time compiler) μεταγλωττίζεται εκ των προτέρων
Στην επιστήμη των υπολογιστών, η πρώιμη μεταγλώττιση (μεταγλώττιση AOT) είναι η πράξη της μεταγλώττισης μιας (συνήθως) γλώσσας προγραμματισμού υψηλού επιπέδου σε μια (συνήθως) γλώσσα χαμηλού επιπέδου πριν από την εκτέλεση ενός προγράμματος, συνήθως κατά το χρόνο κατασκευής, για να μειωθεί η προσπάθεια που πρέπει να εκτελεστεί κατά το χρόνο εκτέλεσης.
Τις περισσότερες φορές, δεν είναι το ίδιο με το συνδυασμό γλωσσών προγραμματισμού υψηλού επιπέδου (όπως C ή C++) ή ενδιάμεσων αναπαραστάσεων όπως Java bytecode ή . NET Framework Common Intermediate Language (CIL) κώδικας) που μεταγλωττίστηκε για να είναι εγγενής (εξαρτώμενος από το σύστημα) που σχετίζεται με τη συμπεριφορά. κώδικα μηχανής έτσι ώστε τα δυαδικά αρχεία που προκύπτουν να μπορούν να εκτελεστούν εγγενώς, ακριβώς όπως ένας τυπικός εγγενής μεταγλωττιστής. Όταν χρησιμοποιείται σε αυτό το συγκεκριμένο περιβάλλον, θεωρείται συχνά ως το αντίθετο της μεταγλώττισης just-in-time (JIT).
Η μεταγλώττιση AOT πραγματοποιείται πριν από τη μεταγλώττιση ή την εγκατάσταση του προγράμματος, δηλαδή προμεταγλωττίζει σενάρια ή bytecodes σε κώδικα μηχανής και τα εκτελεί απευθείας όταν χρειάζεται. Αυτό μπορεί να βελτιώσει την ταχύτητα εκκίνησης του προγράμματος και να αποφύγει καθυστερήσεις που προκαλούνται από τη διαδικασία μεταγλώττισης.
Πλεονεκτήματα AOT:
- Η μεταγλώττιση πριν από την εκτέλεση του προγράμματος αποφεύγει την απόδοση της μεταγλώττισης και την κατανάλωση μνήμης κατά το χρόνο εκτέλεσης
- Η κορυφαία απόδοση μπορεί να επιτευχθεί νωρίς στο πρόγραμμα
- Μπορεί να επιταχύνει σημαντικά την αποτελεσματικότητα της εκτέλεσης του προγράμματος
Μειονεκτήματα AOT:
- Η μεταγλώττιση πριν από την εκτέλεση του προγράμματος αυξάνει τον χρόνο που απαιτείται για την εγκατάσταση του προγράμματος
- Η αποθήκευση προμεταγλωττισμένου περιεχομένου καταλαμβάνει περισσότερη μνήμη
- Θυσιάζοντας τη συνοχή των γλωσσών υψηλού επιπέδου
περίληψη
JIT: Υψηλή απόδοση, μπόνους απόδοσης χρόνου εκτέλεσης, μπορεί να τρέξει πιο γρήγορα και μπορεί να δημιουργήσει δυναμικά κώδικα κ.λπ., αλλά είναι σχετικά αργό στην εκκίνηση και απαιτεί συγκεκριμένο χρόνο και συχνότητα κλήσης για να ενεργοποιηθεί ο μηχανισμός διαστρωμάτωσης JIT AOT: Χαμηλή χρήση μνήμης, γρήγορη ταχύτητα εκκίνησης, μπορεί να συνδέσει απευθείας το χρόνο εκτέλεσης στατικά με το τελικό πρόγραμμα χωρίς χρόνο εκτέλεσης, αλλά δεν υπάρχει μπόνους απόδοσης χρόνου εκτέλεσης και δεν μπορεί να βελτιστοποιηθεί περαιτέρω ανάλογα με την εκτέλεση του προγράμματος
Αναφορά:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
|
Προηγούμενος:.NET/C# Η υψηλή απόδοση συγχωνεύει πολλά αρχεία σε ένα μόνο αρχείοΕπόμενος:Λίστα συλλογής .NET/C#, HashSet για να προσδιορίσετε εάν ένα στοιχείο έχει σημείο αναφοράς
|