La fisión de bucles es una optimización del compilador que divide un bucle de un programa en varios bucles, cada uno de los cuales tiene los mismos límites de índice, pero contiene solo una parte del cuerpo del bucle original .
Por ejemplo, el siguiente código :
int i , a [ 100 ], b [ 100 ]; para ( yo = 0 ; yo < 100 ; yo ++ ) { un [ yo ] = 1 ; segundo [ yo ] = 2 ; }como resultado de aplicar la optimización se convierte en:
int i , a [ 100 ], b [ 100 ]; para ( yo = 0 ; yo < 100 ; yo ++ ) { un [ yo ] = 1 ; } para ( yo = 0 ; yo < 100 ; yo ++ ) { segundo [ yo ] = 2 ; }El objetivo clave de dichas optimizaciones es reducir el número de operaciones de bucle. Aquí, el principal método de optimización es dividir el bucle en varios bucles, para cada uno de los cuales la cantidad de instrucciones requeridas para empaquetar el cuerpo del bucle es estrictamente menor que la cantidad de instrucciones para el bucle original.
La distribución es útil para aislar las dependencias de los bucles de datos en preparación para la vectorización de bucles , para las permutaciones de bucles o para mejorar la localidad al reducir la cantidad total de datos a los que se hace referencia en cada bucle.