Jatkuva taitto ja jatkuva eteneminen ( myös jatkuva promootio, jatkuva päällekkäisyys , jatkuva eteneminen ) ovat nykyaikaisissa kääntäjissä usein käytettyjä optimointeja , jotka vähentävät redundantteja laskelmia korvaamalla vakiolausekkeet ja muuttujat niiden arvoilla [1] . Usein käytetään myös laajennettua algoritmia sparse conditional constant propagation , joka suorittaa samanaikaisesti jatkuvan etenemisen ja jonkin kuolleen koodin poistamisen [2] .
Jatkuva taitto on optimointi, joka arvioi vakiolausekkeet käännöshetkellä. Ensinnäkin numeerisia literaaleja sisältävät vakiolausekkeet yksinkertaistetaan . Myös lausekkeita, jotka sisältävät muuttumattomia muuttujia tai vakioiksi ilmoitettuja muuttujia, voidaan yksinkertaistaa . Harkitse esimerkkiä:
i = 320 * 200 * 32 ;Jatkuvaa taittoa tukeva kääntäjä ei luo kahta kertolaskukäskyä ja tallenna tulosta. Sen sijaan se tunnistaa tämän rakenteen vakiolausekkeeksi ja korvaa sen lasketulla arvolla (tässä tapauksessa 2 048 000).
Vakion eteneminen on optimointi , joka korvaa lausekkeen, joka palauttaa aina saman vakion, kun se suoritetaan kyseisen vakion kanssa [3] . Se voi olla aiemmin määritetty vakio tai vakioihin funktio Harkitse seuraavaa esimerkkiä:
int x = 14 ; int y = 7 - x / 2 ; paluu y * ( 28 / x + 2 );Jakelun xpalautukset:
int x = 14 ; int y = 7 - 14/2 ; _ _ paluu y * ( 28 / 14 + 2 );Lisäksi jatkuva taitto ja levittäminen ypalauttaa seuraavan (määritykset xja yne poistetaan todennäköisesti kuolleen koodin poiston optimoinnilla myöhemmin ):
int x = 14 ; int y = 0 ; paluu 0 ;