Loop unrolling (manchmal auch Loop unwinding), das „Strecken zyklischer Rechenpläne“[1] oder „Strecken einer Schleife“[2], ist eine Optimierungsmethode, die die Laufzeit eines Computerprogramms auf Kosten der Größe seiner Programmdatei beschleunigen kann.[3] Dabei wird eine Schleife
Dadurch wird die Schleifenbedingung seltener oder gar nicht mehr überprüft. Es wird ferner oft ermöglicht, anschließend weitere Optimierungen des (entrollten) Schleifenrumpfes durchzuführen. Die Anzahl der Kopien des ursprünglichen Schleifenrumpfes wird Abrollfaktor (englisch unroll factor) genannt.[4][5]
Moderne Compiler versuchen Schleifen automatisch zu entrollen, falls auf Geschwindigkeit optimiert werden soll.[6][7] Ist bekannt, auf welcher Architektur genau ein Programm später ausgeführt wird, kann eine manuelle Optimierung jedoch überlegen sein.[8]
Kommen die Wiederholungen durch Selbst-Aufrufe (Rekursionen) zustande, lassen sich durch Vervielfältigung des Prozedurrumpfes Prozeduraufrufe und -rücksprünge einsparen. In solchen Fällen spricht man von Recursion unrolling.
<ref>
-Tag; kein Text angegeben für Einzelnachweis mit dem Namen ullman77.<ref>
-Tag; kein Text angegeben für Einzelnachweis mit dem Namen muchnick.<ref>
-Tag; kein Text angegeben für Einzelnachweis mit dem Namen intel_opt_man.<ref>
-Tag; kein Text angegeben für Einzelnachweis mit dem Namen amd2002.