Compiler

Welches ist ein richtiges Beispiel für Constant Folding im Compiler?

  1. AMehrfache Aufrufe derselben Funktion werden zu einem einzigen Aufruf zusammengefasst
  2. Bx = 3 * 4 wird zur Kompilierzeit berechnet und zu x = 12
  3. CDer Schleifenrumpf wird viermal aneinandergereiht, wodurch die Zahl der Iterationen sinkt
Antwort und Erläuterung anzeigen

Antwort: B. x = 3 * 4 wird zur Kompilierzeit berechnet und zu x = 12

Constant Folding ist eine Optimierung, die Ausdrücke, deren Wert zur Kompilierzeit feststeht, vorab berechnet und durch die konstante Ergebnisgröße ersetzt. 3 * 4 ergibt bei jeder Ausführung 12, daher muss zur Laufzeit nicht multipliziert werden. In Kombination mit Konstantenpropagierung lassen sich auch Berechnungen über Variablen zusammenfassen. Bei Gleitkommazahlen sind Vorsichtsmaßnahmen nötig, etwa einheitliche Rundungsverfahren. Das Aneinanderreihen von Schleifenrümpfen ist Loop Unrolling, das Zusammenfassen von Funktionsaufrufen eine andere Optimierung.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. Welcher Code ergibt sich schließlich, wenn auf den obigen Code wiederholt Konstantenpropagierung und Constant Folding angewendet werden?
  2. Welche Aussage ist richtig, wenn auf den obigen Code die Eliminierung gemeinsamer Teilausdrücke angewendet wird?
  3. Was wird bei der Entfernung von totem Code (Dead Code Elimination) entfernt?
  4. Welche Kombination aus Vor- und Nachteil des Inlinings von Funktionen ist richtig?
  5. Welche Hauptwirkung von Loop Unrolling (Schleifenentfaltung) ist richtig?

Vergleiche zu diesem Thema