Pok-13-wyk-Slajd27

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Rozwijanie funkcji

Rozwijanie funkcji


Do bardziej zaawansowanych optymalizacji należy rozwijanie funkcji w linii wywołania, czyli – w pewnym sensie – traktowanie ich jak makra.

W przedstawionym przykładzie funkcja języka C zamieniająca dwa elementy całkowite może w ogóle nie być implementowana jako funkcja tylko zastąpiona trzema rozkazami kodu maszynowego.

Zyskujemy na pewno na wydajności, a najprawdopodobniej również na rozmiarze kodu. Na wydajności – ponieważ unikamy przygotowywania parametrów, wywołania i powrotu z podprogramu. Na rozmiarze – ponieważ kod służący do przygotowania parametrów i wywołania funkcji raczej nie byłby mniejszy niż sekwencja trzech instrukcji kodu maszynowego.

W ogólnym przypadku oczywiście mamy tu do czynienia z poszukiwaniem kompromisu pomiędzy zyskiem prędkości wynikającym z nie wywoływania funkcji, a wzrostem rozmiaru programu wskutek wstawienia implementacji funkcji w miejsce jej wywołania.


<< Poprzedni slajd | Spis treści | Następny slajd >>