Dado el código:Loop desenrollar y optimización
for (int i = 0; i < n; ++i)
{
A(i) ;
B(i) ;
C(i) ;
}
Y la versión de optimización:
for (int i = 0; i < (n - 2); i+=3)
{
A(i)
A(i+1)
A(i+2)
B(i)
B(i+1)
B(i+2)
C(i)
C(i+1)
C(i+2)
}
Algo no está claro para mí: que es mejor? No puedo ver nada que funcione más rápido con la otra versión. Me estoy perdiendo de algo ?
Todo lo que veo es que cada instrucción es en función de la instrucción anterior, lo que significa que necesito esperar que la instrucción anterior acabaría con el fin de iniciar el uno después ...
Gracias
¿Qué idioma? – Bytemain
Wikipedia tiene un buen artículo sobre la idea detrás del bucle de desenrollar lo que vale: http://en.wikipedia.org/wiki/Loop_unwinding –
En general, estos no son equivalentes. Debería ser A (i); Bi); C (i); A (i + 1); B (i + 1); etc. – gnasher729