Zum Inhalt springen

„Common subexpression elimination“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
KLBot2 (Diskussion | Beiträge)
K Bot: 1 Interwiki-Link(s) nach Wikidata (d:Q93593) migriert
tk k
 
Zeile 1: Zeile 1:
Das '''Entfernen gemeinsamer Teilausdrücke''' ({{enS|common subexpression elimination}}) beschreibt eine Compiler-Optimierung. Es wird dabei nach Teilausdrücken gesucht, die zuvor bereits berechnet wurden. Wenn solche gefunden werden, wird das vorherige Ergebnis in einer Variable gespeichert und die wiederholte Berechnung durch die Variable ersetzt.<ref>Muchnick, Steven S.: ''Advanced Compiler Design &amp; Implementation'', Morgan Kaufmann Publishers, 1997, ISBN 1-55860-320-4</ref>
Das '''Entfernen gemeinsamer Teilausdrücke''' ({{enS|common subexpression elimination}}) beschreibt eine Compiler-Optimierung. Es wird dabei nach Teilausdrücken gesucht, die zuvor bereits berechnet wurden. Wenn solche gefunden werden, wird das vorherige Ergebnis in einer Variable gespeichert und die wiederholte Berechnung durch die Variable ersetzt.<ref>Steven S. Muchnick: ''Advanced Compiler Design &amp; Implementation'', Morgan Kaufmann Publishers, 1997, ISBN 1-55860-320-4</ref>


== Beispiel ==
== Beispiel ==
Zeile 5: Zeile 5:
In folgendem Programmabschnitt wird zweimal der Wert von ''a * b'' berechnet:
In folgendem Programmabschnitt wird zweimal der Wert von ''a * b'' berechnet:


<source lang="cpp">
<syntaxhighlight lang="cpp">
x = a * b + c;
x = a * b + c;
y = a * b + d;
y = a * b + d;
</syntaxhighlight>
</source>


Die CSE transformiert den Abschnitt dann so, dass das erste Ergebnis zwischengespeichert wird:
Die CSE transformiert den Abschnitt dann so, dass das erste Ergebnis zwischengespeichert wird:


<source lang="cpp">
<syntaxhighlight lang="cpp">
_tmp = a * b;
_tmp = a * b;
x = _tmp + c;
x = _tmp + c;
y = _tmp + d;
y = _tmp + d;
</syntaxhighlight>
</source>


== Einzelnachweise ==
== Einzelnachweise ==

<references />
<references />



Aktuelle Version vom 1. November 2015, 14:08 Uhr

Das Entfernen gemeinsamer Teilausdrücke (englisch common subexpression elimination) beschreibt eine Compiler-Optimierung. Es wird dabei nach Teilausdrücken gesucht, die zuvor bereits berechnet wurden. Wenn solche gefunden werden, wird das vorherige Ergebnis in einer Variable gespeichert und die wiederholte Berechnung durch die Variable ersetzt.[1]

In folgendem Programmabschnitt wird zweimal der Wert von a * b berechnet:

x = a * b + c;
y = a * b + d;

Die CSE transformiert den Abschnitt dann so, dass das erste Ergebnis zwischengespeichert wird:

_tmp = a * b;
x = _tmp + c;
y = _tmp + d;

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Steven S. Muchnick: Advanced Compiler Design & Implementation, Morgan Kaufmann Publishers, 1997, ISBN 1-55860-320-4