Compiler

Welche Eigenschaft einer Laufzeitumgebung mit JIT-Kompilierung ist richtig?

  1. AVor der Ausführung wird alles in Maschinencode übersetzt und dann verteilt
  2. BWährend der Ausführung häufig genutzte Teile werden zu Maschinencode, und auch Laufzeitinformationen können genutzt werden
  3. CEs wird überhaupt kein Maschinencode verwendet, und Bytecode wird dauerhaft Befehl für Befehl interpretiert
Antwort und Erläuterung anzeigen

Antwort: B. Während der Ausführung häufig genutzte Teile werden zu Maschinencode, und auch Laufzeitinformationen können genutzt werden

Bei der JIT-Kompilierung wird zunächst Bytecode interpretiert; werden häufig ausgeführte Teile (Hotspots) erkannt, werden sie zur Laufzeit zu Maschinencode kompiliert. Mithilfe von Laufzeitinformationen wie den tatsächlich durchlaufenen Verzweigungen und übergebenen Typen sind weitreichende Optimierungen möglich, die bei vorab durchgeführter Kompilierung schwierig sind. Es gibt auch einen Mechanismus zur Rückkehr in die Interpretation, wenn die Annahmen nicht zutreffen. Die vollständige Vorabübersetzung ist die AOT-Kompilierung (Ahead-of-Time), die ausschließliche Interpretation ein reiner Interpreter.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. Welche Beschreibung des grundlegenden Aufbaus von LLVM ist richtig?
  2. In welcher Situation wird bei den Optionen zur Wahl der Optimierungsstufe häufig die Einstellung ohne Optimierung (z. B. -O0) verwendet?
  3. Welche Beschreibung der profilgesteuerten Optimierung (PGO) ist richtig?
  4. Welche Optimierung wird durch Link-Time Optimization (LTO) am ehesten möglich?
  5. In C ist der Überlauf von vorzeichenbehafteten Ganzzahlen undefiniertes Verhalten. Welcher Code kann ein optimierender Compiler unter dieser Voraussetzung für die obige Funktion erzeugen?

Vergleiche zu diesem Thema