1 / 21

Derekursywacja i optymalizacja kodu

Derekursywacja i optymalizacja kodu. Adam Kościelniak IiE III: Ekonometria. Derekursywacja.

leland
Download Presentation

Derekursywacja i optymalizacja kodu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Derekursywacja i optymalizacja kodu Adam Kościelniak IiE III: Ekonometria

  2. 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.

  3. 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. 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. Porównajmy

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

  7. Wyniki dla silni

  8. Optymalizacja kodu

  9. 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. Rozmiar struktur Staraj się tworzyć struktury których rozmiar jest potęgą dwójki. 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 2 0 0 0 0 0 1 0 0 4 0 0 0 0 1 0 0 0 8 0 0 0 1 0 0 0 0 16

  11. Zakres Case’ów Staraj się utrzymywać Case w wąskim zakresie

  12. 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 Jeśli utrzymamy liczbę zmiennych lokalnych kompilator przetrzyma je wszystkie w rejestrach.

  14. 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. 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 Kiedy to tylko możliwe preferuj integer and char

  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 koniecznaaby 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

More Related