Loop Unrolling
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Veränderung (letzte Änderung) (keine anderen Diffs, Normalansicht)

Verändert: 9c9
KategorieOptimierung
KategorieOptimierung

Situation
Bei einer Schleife mit sehr kleinem Körper kann der Overhead der Schleife 50% und mehr der Laufzeit ausmachen, da bei jedem Durchgang ein Zähler erhöht wird, dessen Wert getestet wird und dann (meist) zum Beginn des Körpers gesprungen wird.

Lösung
Führt man in einem Durchgang den Körper mehrmals aus, so muss der Overhead entsprechend seltener bezahlt werden. Dieser Vorgang nennt sich loop unrolling. Dabei muss darauf geachtet werden, dass der dabei entstehende Objektcode deutlich größer sein kann. Ladezeiten und Cacheeffekte und zusätzlicher Code zur Anpassung der Schleifenparameter müssen dabei gegen den geringeren Overhead pro Durchgang abgewogen werden.

Ein altes Beispiel für loop unrolling in C ist Duff's Device. Eine genauere Beschreiung und Kommentar von Tom Duff findet sich bei http://www.lysator.liu.se/c/duffs-device.html


KategorieOptimierung
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 7. September 2003 20:52 (diff))
Suchbegriff: gesucht wird
im Titel
im Text