Vous êtes sur la page 1sur 1

Desenroscado de bucles (loop unrolling)

Bucle normal Bucle desenroscado


for (int indice = 0; indice < 100; ++indice)
{
borrar(indice);
}
for (int indice = 0; indice < 100; indice += 5)
{
borrar(indice);
borrar(indice + 1);
borrar(indice + 2);
borrar(indice + 3);
borrar(indice + 4);
}

Bucle normal Bucle desenroscado
for (int i=0;i<1000;i++)
a[i] = b[i] + c[i];

for (int i=0;i<1000;i+=2) {
a[i] = b[i] + c[i];
a[i+1] = b[i+1] + c[i+1];
}


Recursivo:
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
Iterativo:
int gcd(int a, int b) {
int t;
while (b != 0) {
t = b;
b = a % b;
a = t;
}
return a;
}



Desenroscado:
int gcd(int a, int b)
{
while(true)
{
a = a%b;
if(a==0)
{
return b;
}
b = b%a;
if(b==0)
{
return a;
}
}
}