A ciklusösszevonás (loop merging, eng. loop fusion , eng. loop jamming ) egy olyan fordítóoptimalizálás , amely a ciklusfában több szomszédos ciklust egyesít egybe . A transzformáció akkor lehetséges, ha a hurkok azonos számú iterációval rendelkeznek, és nem függenek egymástól az szerint . A ciklusos összevonás javíthatja az adatlokalitást [1] [2] , ami javítja a gyorsítótár hatékonyságát .
A hurkok összevonása nem mindig csökkenti a program végrehajtási idejét. Egyes architektúrákon előnyösebb lehet két hurok végrehajtása egy kombinált hurok helyett, mivel például ebben az esetben az adatlokalitás magasabb lehet. Ilyen esetekben alkalmazható a fordított optimalizálás, a ciklusbontás , amely egy hurkot több részre bont.
egyenértékű:
int i , a [ 100 ], b [ 100 ]; for ( i = 0 ; i < 100 ; i ++ ) { a [ i ] = 1 ; b [ i ] = 2 ; }