Dělení cyklu

Dělení smyček je optimalizace  kompilátoru , která se pokouší zjednodušit smyčku nebo odstranit závislosti ve smyčce jejím rozdělením na několik částí, které mají stejné tělo zdrojové smyčky a různé rozsahy čítačů.

Například následující kód:

int p = 10 ; pro ( int i = 0 ; i < 10 ; ++ i ) { y [ i ] = x [ i ] + x [ p ]; p = i ; }

v důsledku použití optimalizace se převede na:

y [ 0 ] = x [ 0 ] + x [ 10 ]; pro ( int i = 1 ; i < 10 ; ++ i ) { y [ i ] = x [ i ] + x [ i - 1 ]; }


Nový kód je ekvivalentní předchozímu, ale eliminuje potřebu proměnné "p" uvnitř těla smyčky.

Tato optimalizace se poprvé objevila ve verzi GCC 3.4.

Poznámky

Literatura

  • 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 .
  • 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 .
  • Kennedy, Ken; & Allen, Randy. Optimalizace kompilátorů pro moderní architektury: Přístup založený na závislosti  . - Morgan Kaufmann , 2001. - ISBN 1-55860-286-0 .