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  (  'Hello  n  '  );     //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  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      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 Criar questionário