Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Optimization Michał Drobot Technical Art Director Reality Pump.

Podobne prezentacje


Prezentacja na temat: "Optimization Michał Drobot Technical Art Director Reality Pump."— Zapis prezentacji:

1 Optimization Michał Drobot Technical Art Director Reality Pump

2 Plan wykładu : Podstawy Podstawy optymizacjiPodstawy optymizacji CPUCPU Load Hit StoreLoad Hit Store ProfilingProfiling Xbox 360Xbox 360 C#C# XNAXNA

3 Optimizacja Premature optimization is the root of all evil.Premature optimization is the root of all evil. The first rule of program optimization: don't do it. The second rule: don't do it yet.The first rule of program optimization: don't do it. The second rule: don't do it yet.

4 Optimizacja Przypowieść o przyśpieszaniuPrzypowieść o przyśpieszaniu void PutPixel (int x, int y, unsigned char color) { videoMemory[x + y * 320] = color; }void PutPixel (int x, int y, unsigned char color) { videoMemory[x + y * 320] = color; }

5 Optimizacja offset = y * 320;offset = y * 320; offset = (y * 256) + (y * 64);offset = (y * 256) + (y * 64); offset = (y << 8) + (y << 6);offset = (y << 8) + (y << 6); Co wykona się szybciej?Co wykona się szybciej?

6 Optimizacja Nie optymalizujmy jeśli nie musimyNie optymalizujmy jeśli nie musimy Przedwczesna optymizacjaPrzedwczesna optymizacja Czytelność koduCzytelność kodu SkalowalnośćSkalowalność UżytecznośćUżyteczność Kompilatory oraz sprzęt stają się coraz lepszeKompilatory oraz sprzęt stają się coraz lepsze Częściej one za nas zrobią coś lepiejCzęściej one za nas zrobią coś lepiej

7 Optimizacja Optymalizacja musi mieć uzasadnienieOptymalizacja musi mieć uzasadnienie PrzykładPrzykład Inteligentny kompilator sam wybierze czy lepiej jest dokonać jednego mnożenia czy add i shiftInteligentny kompilator sam wybierze czy lepiej jest dokonać jednego mnożenia czy add i shift Obecna architektura procesorów out-of-order skutecznie ukryje mnożenieObecna architektura procesorów out-of-order skutecznie ukryje mnożenie 3 instrukcje (potencjalnie szybsze) mogą utrudnić tzw. Pipelining3 instrukcje (potencjalnie szybsze) mogą utrudnić tzw. Pipelining W efekcie kod może być wolniejszy na naszą prośbęW efekcie kod może być wolniejszy na naszą prośbę

8 Optimizacja Podstawą jest znajomość platformyPodstawą jest znajomość platformy Bądź jej zachowańBądź jej zachowań Równie ważna jest znajomość kodu i decyzja względem tego co TRZEBA przyśpieszyćRównie ważna jest znajomość kodu i decyzja względem tego co TRZEBA przyśpieszyć

9 Optimizacja Odpowiednio dobrana struktura danych, bądź algorytm, zapewni nam większą wydajność niż jakakolwiek optymizacjaOdpowiednio dobrana struktura danych, bądź algorytm, zapewni nam większą wydajność niż jakakolwiek optymizacja Złożoność algorytmuZłożoność algorytmu O(n)O(n) O(log n)O(log n) O(n^2)O(n^2) …

10 Optimizacja Wybór algorytmu i struktury musi być związany zWybór algorytmu i struktury musi być związany z Częstością użyciaCzęstością użycia Celem użyciaCelem użycia Specyfikacja platformySpecyfikacja platformy Koszt pojedynczej operacji vs. ilość operacjiKoszt pojedynczej operacji vs. ilość operacji Możliwość zrównolegleniaMożliwość zrównoleglenia Oczekiwaną stabilnościąOczekiwaną stabilnością

11 Optimizacja PrzykładPrzykład QucikSort : O(n log n)QucikSort : O(n log n) MergeSort : O(n log n)MergeSort : O(n log n) HeapSort : O(n log n)HeapSort : O(n log n) Dane mają rozkład losowyDane mają rozkład losowy ArchitekturaArchitektura SIMDSIMD Duży koszt operacji loadDuży koszt operacji load

12 Optimizacja PrzykładPrzykład Odpowiedź to mergesortOdpowiedź to mergesort Stosunkowo mała liczba odczytów z pamięciStosunkowo mała liczba odczytów z pamięci Możliwość równoległego wykonywaniaMożliwość równoległego wykonywania Osiąga maksimum w środku wysokości drzewa sortowaniaOsiąga maksimum w środku wysokości drzewa sortowania Praktycznie zerowa przy korzeniachPraktycznie zerowa przy korzeniach Łatwa wektoryzacjaŁatwa wektoryzacja Zależna od typu obiektów przechowywanychZależna od typu obiektów przechowywanych

13 Optimizacja PrzykładPrzykład Odpowiedź to mergesortOdpowiedź to mergesort Stosunkowo mała liczba odczytów z pamięciStosunkowo mała liczba odczytów z pamięci Możliwość równoległego wykonywaniaMożliwość równoległego wykonywania Osiąga maksimum w środku wysokości drzewa sortowaniaOsiąga maksimum w środku wysokości drzewa sortowania Praktycznie zerowa przy korzeniachPraktycznie zerowa przy korzeniach Łatwa wektoryzacjaŁatwa wektoryzacja Zależna od typu obiektów przechowywanychZależna od typu obiektów przechowywanych

14 CPU Dobry kod wymaga znajomości urządzenia, które je wykonujeDobry kod wymaga znajomości urządzenia, które je wykonuje CPUCPU Wiele jednostek wykonawczych z niezależnymi rejestramiWiele jednostek wykonawczych z niezależnymi rejestrami Wspólny strumień komendWspólny strumień komend Brak współdzielenia rejestrówBrak współdzielenia rejestrów Potrzeba ładowania i zapisywania w innym rejestrze jednostki podwykonawczejPotrzeba ładowania i zapisywania w innym rejestrze jednostki podwykonawczej

15 CPU Out-Of-Order executionOut-Of-Order execution In-Order executionIn-Order execution

16 CPU int iTime; float fTime; fTime = static_cast (iTime);int iTime; float fTime; fTime = static_cast (iTime);

17 CPU for (int i=0;i<100;++i) { m_iData++; }for (int i=0;i<100;++i) { m_iData++; } int iData = m_iData; for (int i=0;i<100;++i) { iData++; } m_iData = iData;int iData = m_iData; for (int i=0;i<100;++i) { iData++; } m_iData = iData;

18 Podsumowanie For more information contact me Slides will be available at Drobot.org

19 Questions ?


Pobierz ppt "Optimization Michał Drobot Technical Art Director Reality Pump."

Podobne prezentacje


Reklamy Google