Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.