1 / 36

Code-Optimierung

Agenda. EinfhrungGrundlagenDatenflussanalyseMethoden zur Code-OptimierungZusammenfassung. Ziele und Anforderungen. Verbesserung des Codes, der bei direkter, naiver bersetzung entstehtOptimierungsmglichkeitenVerbesserung der AusfhrgeschwindigkeitVerringerung des Speicherbedarfs zur

valeria
Download Presentation

Code-Optimierung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Code-Optimierung Philipp Bergener Seminar „Übersetzung künstlicher Sprachen“

    2. Agenda Einführung Grundlagen Datenflussanalyse Methoden zur Code-Optimierung Zusammenfassung

    3. Ziele und Anforderungen Verbesserung des Codes, der bei direkter, „naiver“ Übersetzung entsteht Optimierungsmöglichkeiten Verbesserung der Ausführgeschwindigkeit Verringerung des Speicherbedarfs zur Laufzeit Verkleinerung des erzeugten Codes Anforderungen Semantik des Programms muss erhalten bleiben Aufwand für Optimierung muss sich lohnen

    4. Systematisierung Nach Zeitpunkt für Code-Optimierung: Nach Zwischen-Codeerzeugung: Eher allgemeine Methoden Nach Maschinen-Codeerzeugung: Eher maschinenspezifisch Globale vs. lokale Optimierung Lokal: Nur Ausschnitt (Basisblock) wird betrachtet Global: Mehrere Basisblöcke werden betrachtet

    5. Agenda Einführung Grundlagen Datenflussanalyse Methoden zur Code-Optimierung Zusammenfassung

    6. Drei-Adress-Code Zur Darstellung des Zwischencodes Maximal 3 Adressen pro Befehl Typen von Befehlen Zuweisung: x = y op z op: arithmetisch (+,-,*,/) oder logisch (AND, OR) Kopieranweisungen: x = y Unbedingte Sprünge: goto L (L Sprungmarke) Bedingte Sprünge: if x goto L bzw. ifFalse x goto L oder if x relop y bzw. ifFalse x relop y (relop: <, ==, >, etc.) Indizierte Kopieranweisungen: x = a[i] bzw. a[i] = x a[i]: Speicherstelle i Einheiten hinter a

    7. Basisblöcke und Flussgraphen Basisblöcke Strukturieren den Code Eigenschaften eines Basisblocks: Kann nur durch die erste Anweisung betreten werden Wird ohne Sprünge durchlaufen. Sprünge nur in der letzten Anweisung Ein Basisblock beginnt Bei der ersten Codezeile Bei Zeilen, die Ziel von Sprüngen sind Bei Zeilen, die auf Sprünge folgen Flussgraphen stellen Kontrollfluss grafisch dar Basisblöcke sind Knoten 2 zusätzliche Knoten Eingang und Ausgang

    8. Beispiel: Binäre Suche public Ingeger binsearch(Integer k) { Integer m,l,r; //Anfang l = 0; r = N-1; do { m = (l+r)/2; if(k < a[m]) r = m-1; else l = m+1; while((k != a[m])||(l<r)); //Ende ... end

More Related