Compiler

Welche grundlegende Bedingung muss die Optimierung eines Compilers einhalten?

  1. ADie Zahl der Befehle muss stets auf die Hälfte oder weniger des ursprünglichen Programms sinken
  2. BWenn es schneller wird, darf sich die Ausgabe des Programms etwas ändern
  3. CBei korrekten Programmen darf sich das von außen sichtbare Ergebnis nicht ändern
Antwort und Erläuterung anzeigen

Antwort: C. Bei korrekten Programmen darf sich das von außen sichtbare Ergebnis nicht ändern

Optimierungen sind Transformationen, die ein Programm schneller oder kleiner machen, dürfen aber das von außen sichtbare Verhalten eines korrekt geschriebenen Programms, etwa Ausgabe und Schreiben in Dateien, nicht verändern. Unter dieser Bedingung werden Berechnungen umgeordnet oder unnötige Berechnungen entfernt. Wie stark die Befehlszahl sinkt, ist fallabhängig, und eine Regel „auf die Hälfte oder weniger“ gibt es nicht. Das Ergebnis darf sich nur ändern, wenn der Benutzer es ausdrücklich gewählt hat, etwa durch Erlauben der Umordnung von Gleitkommaberechnungen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. Welche Beschreibung der Befehlsauswahl (Instruction Selection), einer Phase der Codeerzeugung, ist richtig?
  2. Welche Beschreibung eines Cross-Compilers ist richtig?
  3. Beim Untersuchen eines mit Optimierung kompilierten Programms im Debugger werden manche Variablenwerte als „nicht darstellbar“ angezeigt. Was ist der Hauptgrund?
  4. Welcher Rückgabewert und welcher verbleibende Code der obigen Funktion ist richtig, wenn Konstantenpropagierung, Constant Folding und Entfernung von totem Code gründlich angewendet werden?
  5. Welche Aufgabe hat die lexikalische Analyse eines Compilers?

Vergleiche zu diesem Thema