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 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.