logo

Desenrolamento de loop

O desenrolamento de loop é uma técnica de transformação de loop que ajuda a otimizar o tempo de execução de um programa. Basicamente, removemos ou reduzimos iterações. O desenrolamento do loop aumenta a velocidade do programa, eliminando instruções de controle de loop e instruções de teste de loop. Programa 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; }  
Programa 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 
Ilustração: O programa 2 é mais eficiente que o programa 1 porque no programa 1 é necessário verificar o valor de i e incrementar o valor de i toda vez que o loop é executado. Portanto, pequenos loops como este ou loops onde há um número fixo de iterações envolvidos podem ser desenrolados completamente para reduzir a sobrecarga do loop.

Vantagens:

  • Aumenta a eficiência do programa.
  • Reduz a sobrecarga do loop.
  • Se as instruções em loop não dependerem umas das outras, elas poderão ser executadas em paralelo.

Desvantagens:

  • Aumento do tamanho do código do programa que pode ser indesejável.
  • Possível aumento do uso de registro em uma única iteração para armazenar variáveis ​​temporárias que podem reduzir o desempenho.
  • Além de códigos muito pequenos e simples, os loops desenrolados que contêm ramificações são ainda mais lentos que as recursões.
Referência: https://en.wikipedia.org/wiki/Loop_unrolling