Compiler

Wie oft werden Zählerprüfung und Verzweigung ausgeführt, wenn eine Schleife mit 100 Iterationen durch Loop Unrolling mit viermal aneinandergereihtem Rumpf umgeschrieben wird? (100 sei durch 4 teilbar.)

  1. A100-mal
  2. B25-mal
  3. C400-mal
Antwort und Erläuterung anzeigen

Antwort: B. 25-mal

Wird der Rumpf viermal aneinandergereiht, führt eine Iteration die Verarbeitung von vier ursprünglichen Iterationen aus, die Zahl der Iterationen beträgt also 100 ÷ 4 = 25, und auch Zählerprüfung und Verzweigung werden nur 25-mal ausgeführt. Gegenüber den ursprünglichen 100 verringert sich der Aufwand für Verzweigungen o. Ä. auf ein Viertel. Ist die Zahl nicht durch 4 teilbar, wird dahinter eine kurze Schleife für den Rest angefügt. 100 ist die Zahl ohne Unrolling, 400 ein Wert, der durch fälschliches Multiplizieren der Rumpfverarbeitungen entsteht.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. Welcher allgemeine Ablauf von einem C-Programm bis zur ausführbaren Datei ist richtig?
  2. Wie heißt die Optimierung, die eine kurze Folge erzeugten Maschinencodes durch ein kleines Fenster betrachtet und ungünstige Befehlskombinationen durch bessere Befehle ersetzt?
  3. Welche Optimierung greift im obigen Code nach dem Inlining von sq, und welches Ergebnis ist richtig?
  4. Welche Beschreibung von Software Pipelining ist richtig?
  5. Warum ordnet ein Compiler bei strenger Einstellung die Gleitkommaaddition (a + b) + c nicht eigenmächtig zu a + (b + c) um?

Vergleiche zu diesem Thema