A loop fission egy olyan fordítóoptimalizálás , amely egy programban lévő ciklust több ciklusra oszt fel, amelyek mindegyikének ugyanaz az indexhatára, de az eredeti ciklus törzsének csak egy részét tartalmazza .
Például a következő kód :
int i , a [ 100 ], b [ 100 ]; for ( i = 0 ; i < 100 ; i ++ ) { a [ i ] = 1 ; b [ i ] = 2 ; }az optimalizálás eredményeként a következőre konvertálódik:
int i , a [ 100 ], b [ 100 ]; for ( i = 0 ; i < 100 ; i ++ ) { a [ i ] = 1 ; } for ( i = 0 ; i < 100 ; i ++ ) { b [ i ] = 2 ; }Az ilyen optimalizálás fő célja a hurokműveletek számának csökkentése. Itt a fő optimalizálási módszer a hurok felosztása több ciklusra, amelyek mindegyikénél a ciklustörzs becsomagolásához szükséges utasítások száma szigorúan kevesebb, mint az eredeti ciklus utasításainak száma.
Az elosztás hasznos az adathurok-függőségek elkülönítésére a hurokvektorizálásra , a hurokpermutációkra, vagy a lokalitás javítására az egyes hurokban hivatkozott adatok teljes mennyiségének csökkentésével .