Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Derekursywacja i optymalizacja kodu

Podobne prezentacje


Prezentacja na temat: "Derekursywacja i optymalizacja kodu"— Zapis prezentacji:

1 Derekursywacja i optymalizacja kodu
4/9/2017 Derekursywacja i optymalizacja kodu Adam Kościelniak IiE III: Ekonometria

2 4/9/2017 Derekursywacja Derekursywacja - przemiana algorytmów rekurencyjnych (rekursyjnych) na iteracyjne. Stosuje się ją w celu zwiększenia szybkości działania aplikacji (korzystającej z algorytmów rekurencyjnych) oraz zmniejszenia jej zajętości pamięciowej. Rekurencja Iteracja

3 4/9/2017 Iteracja Iteracja (łac. iteratio ‘powtórzenie’) to czynność powtarzania (najczęściej wielokrotnego) tej samej instrukcji (albo wielu instrukcji) w pętli. Mianem iteracji określa się także operacje wykonywane wewnątrz takiej pętli.

4 4/9/2017 Rekurencja Rekurencja albo rekursja (ang. recursion, z łac. recurrere, przybiec z powrotem) to w logice, programowaniu i w matematyce odwoływanie się np. funkcji lub definicji do samej siebie.

5 4/9/2017 Porównajmy Iteracyjnie Rekurencyjnie

6 Mierzenie czasu wykonania
4/9/2017 Mierzenie czasu wykonania Po modyfikacji kodu możemy mierzyć efektywność algorytmu dla różnej liczby wykonań :

7 Wyniki dla silni Rekurencja Iteracja
4/9/2017 Wyniki dla silni Rekurencja Iteracja 10000: sekund : sekund : sekund 10000: sekund : sekund : sekund

8 4/9/2017 Optymalizacja kodu

9 Preferuj inicjalizację na przypisanie
4/9/2017 Preferuj inicjalizację na przypisanie Weźmy pod uwagę przykład: W ten sposób oszczędzamy kompilatorowi pracy ponieważ nie musi się on po raz kolejny odwoływać do costructora typu complex (zdefiniowany wcześniej w programie typ – liczba zespolona)

10 4/9/2017 Rozmiar struktur Staraj się tworzyć struktury których rozmiar jest potęgą dwójki. 1 1 1 2 1 4 1 8 1 16

11 Zakres Case’ów Staraj się utrzymywać Case w wąskim zakresie 4/9/2017 1
Zrób 1 2 Zrób 2 3 Zrób 3 4 Zrób 4 def Zrób 5

12 Rozbijanie dużych switchy
4/9/2017 Rozbijanie dużych switchy Duże switche możemy rozbijać na ciągi switchy zagnieżdżonych (nested). Znacznie zmieniejsza to ilość wykonanych porównań.

13 Jak najmniej zmiennych lokalnych
4/9/2017 Jak najmniej zmiennych lokalnych Jeśli utrzymamy liczbę zmiennych lokalnych kompilator przetrzyma je wszystkie w rejestrach.

14 Zredukuj ilość parametrów
4/9/2017 Zredukuj ilość parametrów Jeśli funkcja używa dużej ilości parametrów każde wywołanie będzie wymagało operacji na stosach. Z tego samego powodu należy unikać przekazywania całych struktur jako parametry, używaj wskaźników i referencji. Struktura Funkcja *Wskaźnik

15 4/9/2017 Idąc dalej… Najlepiej ogólnie obiektów większych niż 4 bajty nie powinno się kopiować do funkcji a używac wskaźnika 8 Funkcja

16 Preferuj int nad char i short
4/9/2017 Preferuj int nad char i short Kiedy to tylko możliwe preferuj integer and char Pobierz wartości zmiennych Konwertuj na integer Wykonaj działanie Pobierz wartości zmiennych Wykonaj działanie

17 In line: Gdy twoje funkcje są małe poprzedź je wyrażeniem stałym „inline”

18 Pytanie kontrolne I Rekurencja to: Funkcja języka C++ Typ zmiennej
Odwoływanie się funkcji do samej siebie Cecha estymatora klasycznej metody najmniejszych kwadratów

19 Pytanie kontrolne II Derekursywacji dokonujemy w celu:
Zwiększenia wydajności programu Jest to czysto akademicka teoria Uporządkowania kodu Jest konieczna aby program uruchomił się na linuxie

20 Pytanie kontrolne III Co jest szybsze: Rekurencja Iteracja
Nie ma różnicy Jest to zależne od procesora

21 Pytanie kontrolne IV Duże switche najlepiej: Rozdzielać na mniejsze
Zagnieżdżać w sobie Odradza się używanie switchy Żadna z powyższych odpowiedzi


Pobierz ppt "Derekursywacja i optymalizacja kodu"

Podobne prezentacje


Reklamy Google