Zum Inhalt springen

Common subexpression elimination

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 1. November 2015 um 12:08 Uhr durch imported>PerfektesChaos (tk k).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Das Entfernen gemeinsamer Teilausdrücke ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) 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

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

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

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

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

Einzelnachweise

<references />