// 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 HelloIlustraçã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.