„Common subexpression elimination“ – Versionsunterschied
Erscheinungsbild
[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> |
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 & 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: |
||
< |
<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: |
||
< |
<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]
Beispiel
[Bearbeiten | Quelltext bearbeiten]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]- ↑ Steven S. Muchnick: Advanced Compiler Design & Implementation, Morgan Kaufmann Publishers, 1997, ISBN 1-55860-320-4