Pok-13-wyk-Slajd26
Optymalizacje pętli – rozwijanie pętli
Rozwijanie pętli jest techniką optymalizacji, w której redukuje się liczbę iteracji pętli powielając kod tworzący ciało pętli. Uzyskuje się w ten sposób bardziej liniową strukturę kodu (pętla nie musi być usunięta całkowicie, można tylko zmniejszyć liczbę iteracji np. żeby lepiej wykorzystać zwielokrotnione jednostki wykonawcze procesora). Przy całkowitym rozwinięciu pętli możemy pozbyć się również modyfikatora i testowania warunku stopu (o ile semantyka języka na to pozwala i nie ma problemu efektów ubocznych).
W przedstawionym przykładzie w języku Ada pętlę zerującą trzy elementy tablicy rozwinięto całkowicie usuwając przy okazji iterator i , ponieważ z definicji języka jest on lokalny dla pętli (w języku C tego typu zabieg jest trudniej przeprowadzić).
Nie każdą pętlę da się rozwinąć – zakres iteratora oraz wyrażenie modyfikujące muszą być znane w trakcie kompilacji.
Trzeba również sprawdzić, czy rozwijanie konkretnej pętli ma w ogóle sens – tysiąckrotne wstawienie dużego ciała pętli może powiększyć rozmiar kodu poza akceptowalne granice.