En informática , la fisión de bucle (o distribución de bucle ) es una optimización del compilador en la que un bucle se divide en múltiples bucles sobre el mismo rango de índice y cada uno de ellos toma solo una parte del cuerpo del bucle original. [1] [2] El objetivo es dividir un cuerpo de bucle grande en otros más pequeños para lograr una mejor utilización de la localidad de referencia . Esta optimización es más eficiente en procesadores de múltiples núcleos que pueden dividir una tarea en múltiples tareas para cada procesador .
Por el contrario, la fusión de bucles (o bloqueo de bucles ) es una optimización del compilador y una transformación de bucles que reemplaza varios bucles por uno solo. [3] [2] Es posible cuando dos bucles iteran sobre el mismo rango y no hacen referencia a los datos del otro. La fusión de bucle no siempre mejora la velocidad de ejecución. En algunas arquitecturas , dos bucles pueden funcionar mejor que un bucle porque, por ejemplo, hay una mayor localidad de datos dentro de cada bucle.
Fisión
Ejemplo en C
int i , a [ 100 ], b [ 100 ]; para ( i = 0 ; i < 100 ; i ++ ) { a [ i ] = 1 ; b [ i ] = 2 ; }
es equivalente a:
int i , a [ 100 ], b [ 100 ]; para ( i = 0 ; i < 100 ; i ++ ) { a [ i ] = 1 ; } para ( i = 0 ; i < 100 ; i ++ ) { b [ i ] = 2 ; }
Ver también
Referencias
- ^ YN Srikant; Priti Shankar (3 de octubre de 2018). El manual de diseño del compilador: optimizaciones y generación de código de máquina, segunda edición . Prensa CRC. ISBN 978-1-4200-4383-9.
- ^ a b Kennedy, Ken y Allen, Randy. (2001). Optimización de compiladores para arquitecturas modernas: un enfoque basado en la dependencia . Morgan Kaufmann. ISBN 1-55860-286-0.
- ^ Steven Muchnick; Muchnick y Asociados (15 de agosto de 1997). Implementación avanzada del diseño del compilador . Morgan Kaufmann. ISBN 978-1-55860-320-2.
fusión de bucle.