Konvoluce konstant

Konstantní skládání a  konstantní šíření ( také neustálé povyšování, konstantní duplikace , konstantní šíření ) jsou optimalizace často používané v moderních kompilátorech , které omezují nadbytečné výpočty tím, že nahrazují konstantní výrazy a proměnné jejich hodnotami [1] . Často se také používá rozšířený algoritmus sparse conditional konstantní propagace , který současně provádí konstantní šíření a odstranění nějakého mrtvého kódu [2] .  

Neustálé skládání

Konstantní skládání  je optimalizace, která vyhodnocuje konstantní výrazy v době kompilace. Za prvé, konstantní výrazy obsahující číselné literály jsou zjednodušeny . Výrazy obsahující nikdy se neměnící proměnné nebo proměnné deklarované jako konstanty lze také zjednodušit . Zvažte příklad:

i = 320 x 200 x 32 ;

Kompilátor, který podporuje konstantní skládání, nevygeneruje dvě instrukce pro násobení a nezaznamená výsledek. Místo toho rozpozná tento konstrukt jako konstantní výraz a nahradí ho vypočítanou hodnotou (v tomto případě 2 048 000).

Neustálé šíření

Šíření konstant  je optimalizace , která nahrazuje výraz, který vždy vrací stejnou konstantu, když je vykonán, samotnou konstantou [3] . Může to být konstanta definovaná dříve nebo aplikovaná na konstanty Zvažte následující příklad:

int x = 14 ; int y = 7 - x / 2 ; návrat y * ( 28 / x + 2 );

Distribuční xvýnosy:

int x = 14 ; int y = 7 - 14/2 ; _ _ návrat y * ( 28/14 + 2 ) ; _

Kromě toho neustálé skládání a šíření yvrací následující (přiřazení xa ypravděpodobně budou později odstraněna optimalizací odstranění mrtvého kódu ):

int x = 14 ; int y = 0 ; návrat 0 ;

Viz také

Poznámky

  1. Workshop "Optimalizace kompilátorů" (na příkladu GCC). - NGU je. Lobačevského. - S. 100.
  2. Muchnick, 1997 , str. 362-370.
  3. Dračí kniha, 2008 , str. 760.

Literatura

  • Steven S. Muchnick. Pokročilý návrh a implementace kompilátoru. — 5. vydání. - San Francisco: Morgan Kaufmann Publishers , 1997. - 856 s. - ISBN 1-55860-320-4 .
  • Alfred Aho, Monica Lam, Ravi Seti, Jeffrey Ullman. Kompilátory : Principy, techniky a nástroje = Kompilátory: Principy, techniky a nástroje. — 2. vydání. - M .: "Williams", 2008. - 1184 s. - 1500 výtisků.  - ISBN 978-5-8459-1349-4 .

Odkazy