logo

Schleifenabrollen

Das Schleifenabrollen ist eine Schleifentransformationstechnik, die dabei hilft, die Ausführungszeit eines Programms zu optimieren. Grundsätzlich entfernen oder reduzieren wir Iterationen. Das Abrollen einer Schleife erhöht die Geschwindigkeit des Programms, indem es Schleifensteuerungsanweisungen und Schleifentestanweisungen eliminiert. Programm 1: CPP
// This program does not uses loop unrolling. #include int main(void) {  for (int i=0; i<5; i++)  printf('Hellon'); //print hello 5 times  return 0; }  
Programm 2: CPP
// This program uses loop unrolling. #include int main(void) {  // unrolled the for loop in program 1  printf('Hellon');  printf('Hellon');  printf('Hellon');  printf('Hellon');  printf('Hellon');  return 0; }  
Output:
Hello Hello Hello Hello Hello 
Illustration: Programm 2 ist effizienter als Programm 1, da in Programm 1 bei jedem Schleifendurchlauf der Wert von i überprüft und der Wert von i erhöht werden muss. Daher können kleine Schleifen wie diese oder Schleifen mit einer festen Anzahl von Iterationen vollständig abgewickelt werden, um den Schleifenaufwand zu reduzieren.

Vorteile:

Wählen Sie aus mehreren SQL-Tabellen aus
  • Erhöht die Programmeffizienz.
  • Reduziert den Schleifenaufwand.
  • Wenn Anweisungen in einer Schleife nicht voneinander abhängig sind, können sie parallel ausgeführt werden.

Nachteile:

  • Erhöhte Programmcodegröße, die unerwünscht sein kann.
  • Mögliche erhöhte Nutzung von Registern in einer einzelnen Iteration zum Speichern temporärer Variablen, was die Leistung beeinträchtigen kann.
  • Abgesehen von sehr kleinen und einfachen Codes sind abgerollte Schleifen, die Verzweigungen enthalten, sogar langsamer als Rekursionen.
Referenz: https://en.wikipedia.org/wiki/Loop_unrolling