Derekursywacja i optymalizacja kodu

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Tryby adresowania Prawie każda operacja wykonywana przez mikroprocesor wykonywana jest na pewnych argumentach (lub argumencie). Sposoby wskazywania argumentów.
Sortowanie przez scalanie
C++ wykład 2 ( ) Klasy i obiekty.
Język C/C++ Funkcje.
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Programowanie obiektowe
Programowanie obiektowe
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Programowanie I Rekurencja.
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
formatowanie kodu źródłowego
ALGORYTMY I STRUKTURY DANYCH
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
C++ wykład 2 ( ) Klasy i obiekty.
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Podstawy programowania PP – LAB5 Wojciech Pieprzyca.
Wykład 2 struktura programu elementy języka typy zmienne
Project made by Bartosz Rumiński Kl. III i rok 2007/2008.
PASCAL (2) dr Anna Kwiatkowska.
Wprowadzenie do programowania w języku Turbo Pascal
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Schemat Hornera Mgr inż. Michał Szucki.
Podstawy programowania
Zbiór do posortowania mieści się w pamięci
ALGORYTMY KLASYCZNE ________ FRAKTALE
Podstawy programowania
Programowanie w języku Matlab
Programowanie strukturalne i obiektowe
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
TABLICE C++.
Procedury i funkcje.
Generator analizatorów leksykalnych
Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie
PHP: warunki, pętle, switch, break, continue
Pętla do ... While C++ Źródło:
Podstawy programowania
ALGORYTMY.
ITERACJA - powtórzenie
Inicjalizacja i sprzątanie
Podstawy informatyki 2013/2014
Zajęcia I Organizacja zajęć Rejestracja i uruchamianie makr
Wykład 10 typ zbiorowy rekurencja.
Kurs języka C++ – wykład 3 ( )
Kurs języka C++ – wykład 9 ( )
Instrukcje iteracyjne
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Algorytmy- Wprowadzenie do programowania
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
Pętle – instrukcje powtórzeń
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
Temat 3: Podstawy programowania Algorytmy – 2 z 2 _________________________________________________________________________________________________________________.
Programowanie I Rekurencja.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Rekurencja - Haskell Bartosz Pawlak Sebastian Żółtowski Adam Stegenda Krystian Sobótka Tomasz Gołębiewski.
Rozdział 5 REKURENCJA.
Programowanie I Rekurencja.
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

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

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

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

4/9/2017 Porównajmy Iteracyjnie Rekurencyjnie

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

Wyniki dla silni Rekurencja Iteracja 4/9/2017 Wyniki dla silni Rekurencja Iteracja 10000: 0.00300 sekund 100000: 0.03300 sekund 1000000: 0.36600 sekund 10000: 0.00100 sekund 100000: 0.01600 sekund 1000000: 0.14500 sekund

4/9/2017 Optymalizacja kodu

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)

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

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

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

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

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

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

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

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

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

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

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

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