Ciklus felosztás

A hurokfelosztás egy olyan  fordítóoptimalizálás , amely megpróbálja leegyszerűsíteni a hurkot , vagy megszüntetni a hurokban lévő függőségeket azáltal, hogy több részre osztja fel, amelyeknek ugyanaz a forráshurok törzse és különböző számlálótartományai.

Például a következő kód:

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

az optimalizálás eredményeként a következőre konvertálódik:

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


Az új kód ekvivalens az előzővel, de szükségtelenné teszi a "p" változót a ciklustörzsben.

Ez az optimalizálás először a GCC 3.4-es verziójában jelent meg.

Jegyzetek

Irodalom

  • Alfred Aho, Monica Lam, Ravi Seti, Jeffrey Ullman. Fordítók: alapelvek, technikák és eszközök = Compilers : Principles, Techniques, and Tools. — 2. kiadás. - M . : "Williams", 2008. - 1184 p. - 1500 példány.  - ISBN 978-5-8459-1349-4 .
  • Steven S. Muchnick. Fejlett fordítói tervezés és megvalósítás. — 5. kiadás. - San Francisco: Morgan Kaufmann Publishers , 1997. - 856 p. - ISBN 1-55860-320-4 .
  • Kennedy, Ken; & Allen, Randy. Fordítóprogramok optimalizálása modern építészetekhez : Függőség-alapú megközelítés  . - Morgan Kaufmann , 2001. - ISBN 1-55860-286-0 .