Silmukan fissio on kääntäjän optimointi , joka jakaa ohjelman silmukan useisiin silmukoihin, joilla jokaisella on samat indeksirajat, mutta jotka sisältävät vain osan alkuperäisen silmukan rungosta .
Esimerkiksi seuraava koodi :
int i , a [ 100 ], b [ 100 ]; for ( i = 0 ; i < 100 ; i ++ ) { a [ i ] = 1 ; b [ i ] = 2 ; }optimoinnin soveltamisen seurauksena muunnetaan muotoon:
int i , a [ 100 ], b [ 100 ]; for ( i = 0 ; i < 100 ; i ++ ) { a [ i ] = 1 ; } for ( i = 0 ; i < 100 ; i ++ ) { b [ i ] = 2 ; }Tällaisten optimointien päätavoite on vähentää silmukkaoperaatioiden määrää. Tässä pääasiallinen optimointimenetelmä on silmukan jakaminen useisiin silmukoihin, joista jokaisessa silmukan rungon pakkaamiseen tarvittavien käskyjen määrä on tiukasti pienempi kuin alkuperäisen silmukan käskyjen määrä.
Jakelu on hyödyllinen datasilmukkariippuvuuksien eristämiseen valmisteltaessa silmukkavektorisointia , silmukkapermutaatioita tai parantaa paikallisuutta vähentämällä kussakin silmukassa viitatun datan kokonaismäärää.