|
|
Veröffentlicht am 15.02.2024 17:17:46
|
|
|
|

Terminologie
CLI: Common Language Infrastructure ist eine Spezifikation im .NET-Framework, die eine sprachunabhängige, architekturübergreifende Laufzeitumgebung definiert. Daher können wir Software in verschiedenen hochstufigen Sprachen unter der Spezifikation entwickeln, die in unterschiedlichen Computerarchitekturen ohne Modifikation ausgeführt werden können
CLR: Common Language Runtime. ist eine Spezifikation, die sicherstellt, dass die Betriebsumgebung sprachunabhängig und architekturübergreifend ist
CTS: Common Type System
CLS: Common Language Specification
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler kompiliert den Quellcode fortgeschrittener Sprachen in Zwischensprachen.
JIT: Just In Time Compiler kompiliert eine Zwischensprache zu Maschinencode, den ein Computer verstehen kann, der dann ausgeführt werden kann
Der Quellcode wird von einem C#-Compiler in IL kompiliert (d. h. Programme, DLLs, Exes usw.). Der CLR lädt diese ILs, kompiliert sie über JIT in Maschinencode und wird schließlich ausgeführt, wie in der folgenden Abbildung gezeigt:
JIT (Just-in-time-Compiler) wird on-the-fly kompiliert
Der Just-in-Time-Compiler (JIT) ist Teil der Common Language Runtime (CLR) in .NET und verantwortlich für die Verwaltung der . .NET-Programm, unabhängig von beliebigen . .NET-Programmiersprache. Sprachspezifische Compiler konvertieren Quellcode in Zwischensprachen. Diese Zwischensprache wird dann von einem Just-in-Time-(JIT)-Compiler in Maschinencode umgewandelt. Dieser Maschinencode ist spezifisch für die Computerumgebung, in der der JIT-Compiler läuft. JIT-Compiler-Arbeit: JIT-Compiler müssen die Codeausführung beschleunigen und Unterstützung für mehrere Plattformen bieten. So funktioniert es:
Der JIT-Compiler wandelt Microsoft Intermediate Language (MSIL) oder Common Intermediate Language (CIL) in Maschinencode um. Dies geschieht vor der Durchführung von MSIL oder CIL. MSIL wird bei Bedarf in Maschinencode umgewandelt, d. h. der JIT-Compiler kompiliert MSIL oder CIL nach Bedarf, anstatt den gesamten Code zu kompilieren. Speichere das kompilierte MSIL oder CIL, damit es bei Bedarf für weitere Aufrufe verwendet werden kann.
JIT-Vorteile:
- Sie kann in Echtzeit entsprechend der aktuellen Hardwaresituation kompiliert und generiert werden
- Die optimale Maschinenbefehlssequenz kann gemäß der aktuellen Programmoperation generiert werden
- Wenn ein Programm dynamische Verlinkung unterstützen muss, kann es nur die JIT-Kompilierungsmethode verwenden
- Der Code kann je nach aktueller Speichersituation im Prozess angepasst werden, um den Speicher besser zu nutzen
JIT-Nachteile:
- Das Kompilieren benötigt die Ressourcen der Laufzeitlaufzeit, was dazu führt, dass der Prozess beim Ausführen ruckelt
- Kompilierung beansprucht Laufzeit, und einige Code-Kompilierungsoptimierungen können nicht vollständig unterstützt werden, daher ist es notwendig, Flüssigkeit und Zeit auszubalancieren
- Kompilierungsvorbereitung und Identifikation häufig verwendeter Methoden sind zeitaufwendig, und die anfängliche Kompilierung erzielt nicht die höchste Leistung
AOT (Ahead-of-time Compiler) wird im Voraus kompiliert
In der Informatik bezeichnet frühe Kompilierung (AOT-Kompilierung) die Handlung, eine (meist) hochstufige Programmiersprache in eine (meist) niedrigstufige Sprache zu kompilieren, bevor ein Programm ausgeführt wird, meist zur Build-Zeit, um den Aufwand zur Laufzeit zu verringern.
Meistens ist es nicht dasselbe wie die Kombination von hochstufigen Programmiersprachen (wie C oder C++) oder Zwischenrepräsentationen wie Java, Bytecode oder . NET Framework Common Intermediate Language (CIL)-Code) kompiliert, um native (systemabhängig) verhaltensbezogen zu sein. Maschinencode, sodass die resultierenden Binärdateien nativ ausgeführt werden können, genau wie bei einem standardmäßigen nativen Compiler. In dieser speziellen Umgebung wird es oft als das Gegenteil der Just-in-Time-(JIT)-Kompilierung angesehen.
Die AOT-Kompilierung findet statt, bevor das Programm kompiliert oder installiert wird, das heißt, es prekompiliert Skripte oder Bytecodes in Maschinencode und führt sie bei Bedarf direkt aus. Dies kann die Startgeschwindigkeit des Programms verbessern und Verzögerungen durch den Kompilierungsprozess vermeiden.
AOT-Vorteile:
- Das Kompilieren vor dem Programmstart vermeidet die Kompilierungsleistung und den Speicherverbrauch zur Laufzeit
- Maximale Leistung kann früh im Programm erreicht werden
- Es kann die Effizienz der Programmausführung erheblich beschleunigen
AOT-Nachteile:
- Das Kompilieren vor dem Programmstart erhöht die Zeit, die für die Installation des Programms benötigt wird.
- Das Speichern vorkompilierter Inhalte beansprucht mehr Speicher
- Opferung der Konsistenz hochstufiger Sprachen
Zusammenfassung
JIT: Hoher Durchsatz, Laufzeit-Leistungsbonus, kann schneller laufen und kann dynamisch Code generieren usw., aber der Start ist relativ langsam und benötigt eine bestimmte Zeit und Ruffrequenz, um den JIT-Layering-Mechanismus auszulösen AOT: Geringer Speicherverbrauch, schnelle Startgeschwindigkeit, kann die Laufzeit statisch direkt mit dem finalen Programm ohne Laufzeit verknüpft werden, aber es gibt keinen Leistungsbonus zur Laufzeit, und es kann nicht weiter optimiert werden, je nach Programmlaufzeit
Referenz:
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
|
Vorhergehend:.NET/C# Hochleistung führt mehrere Dateien zu einer einzigen Datei zusammenNächster:.NET/C# Collection List, HashSet, um zu bestimmen, ob ein Element einen Benchmark hat
|