Optimization Michał Drobot Technical Art Director Reality Pump.

Slides:



Advertisements
Podobne prezentacje
PLOT OF LAND IN WILANÓW This plot of land is situated in Wilanów, prestigious district of Warsaw. It is near PRZYCZÓŁKOWA AVENUE, and very close to the.
Advertisements

Experiencing the New Europe July 11 – August 1, 2008.
Maj PoWtŚrCzPiSoNi
Summer proverbs Przysłowia letnie..
Istota wyczynu we wspinaczce plenerowej.
The town of Milanowek and the area around it
USA.
Projekt Do kariery na skrzydłach – studiuj Aviation Management Projekt współfinansowany ze ś rodków Europejskiego Funduszu Społecznego. Biuro projektu:
Introduction to SystemC
Programowanie wielowątkowe
Analiza wywołania i przebiegu przerwań w systemie Linux
Projekt Do kariery na skrzydłach – studiuj Aviation Management Projekt współfinansowany ze ś rodków Europejskiego Funduszu Społecznego. Biuro projektu:
Projekt Do kariery na skrzydłach – studiuj Aviation Management Projekt współfinansowany ze ś rodków Europejskiego Funduszu Społecznego. Biuro projektu:
Sun altitude Made by: Patryk Cichy Patryk Cichy Mateusz Dąbrowicz Mateusz Dąbrowicz Mariusz Król Mariusz Król Mariusz Dyrda Mariusz Dyrda Group leader:
ALLEGRO PIERWSZA GRA: WYŚCIG
argumenty wiersza poleceń: getopt
The proverbs associated with the winter
Netiquette Wiktoria Pacholik. Netiquette Netiquette is a collection of cyberspace rules. Netiquette is obligatory every internets user.
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Rekursja Teoretyczne podstawy informatyki Wykład 5
Team Building Copyright, 2003 © Jerzy R. Nawrocki Requirements Engineering Lecture.
Łukasz Monkiewicz.
Zachodniopomorskie Centrum Edukacyjne Zadanie domowe.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Projektowanie warstwy klienckiej aplikacji internetowych JavaScript.
Easter 2011 Easter 2011.
Mariusz Pudzianowski.
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak Michał Kucal
Polska - kilka informacji Poland - more informations Na początek kilka słów o autorze At the beginning of a few words about the author.
1 Building Integration System - Training Internal | ST-IST/PRM1 | 02/2008 | © Robert Bosch GmbH All rights reserved, also regarding any disposal,
Volleyball Polish national sport.
Pierwszy dzień w collegu St. Augustin w Angers. Czwartek, 20 maja To był nasz pierwszy dzień w collegu St. Augustina w Angers, który rozpoczął się o 8:00.
Volleyball my hobby Oliwia Rejek.
REKURENCJA.
Zajęcia realizowane w ramach projektu Moja Szkoła - Mój kapitał na przyszłość współfinansowany przez Unię Europejską z Europejskiego Funduszu Społecznego.
In the mobile showroom. Excuse me. Welcome, sir!
______________________________________ TARGU-JIU 2010.
21 grudnia 2011r. uczennice z klas 6A i 6B wystąpiły w przedstawieniu pt. That film star stole my backpack!. Scenka odegrała się w sądzie. Uczennica Tracy.
Tatrzański Park Narodowy The Tatrzański National Park
IDIOMS & PROVERBS Why not to enrich your language with such great phrases and expressions?...
Click to show the screen.
XML – eXtensible Markup Language
POLAND. we will take you on a journey during which you will learn something about us.
Tablice. Tablica struktura danych, służy do przechowywania danych tego samego typu, zapisana w pamięci w sposób ciągły. Deklaracja tablicy PascalC++,
Writing about my new house
Na podstawie: The Illusion Of Life Disney Animation.
By Paulina. Money is different in different countries. Poland – zloty The UK – pound The USA – dollar Some countries in Europe – euro.
January 2O13.
Introduction to Numerical Analysis
Institute of Computer Science PAS Warsaw, The Project is co-financed by the European Union from resources of the European Social Found.
Herbariums
An island nation located in the south-west Pacific
Ślady krajów w Polsce... Hiszpania...Niemcy...Szwecja... Holandia... By Peter.
REKSIO.
Publikacjeliczba Suma punktów wg 2012 Średnia pkt na publikację Suma pkt IF Średni IF Lista A ,360,0,11,46 Lista B864855,64-- Inne Monografie36521,7--
2 Review What is bionomial nomenclature Explain What is a genus
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 6.
Rites and rituals in Poland. Funeral In Poland, the bodies of the dead are buried on the third day after death, rarely on Sunday. Candles and flowers.
River Vistula!.
Polskie gady Polish reptiles
Before the Second World War when the city was still within the border of the Third Reich, the villa was probably rich industrialist’s home.
Adresy względne i bezwzględne Excel. 5 5 A A B B C C D D
Εγω ειμι το φως του κοσμου Jezus Światło Świata Trevor Hawes 2007.
„My school – Moja szkoła” Authors: A. Krauze, L. Łompieś, K. Więciarz, J. Pałdyna, J. Rutkiewicz, K. Stefanowicz, E. Streich, K. Baran, P. Brodnicka, O.
Zamek Niedzica Niedzica Castle. Zamek Dunajec – średniowieczna warownia znajdująca się na prawym brzegu Zbiornika Czorsztyńskiego we wsi Niedzica-Zamek.
Recycled paper Recycling paper art Instrumenty muzyczne z papieru gazetowego newspaper covered instruments Kyle Bean jest dyrektorem artystycznym i projektantem.
których rodzice nie powinni
Linux Live CD Alternatywne Systemy & Webmarss 2009.
My hobby is love HUBERT SADŁO KLASA 6a.
Chapter 7: Art PowerPoint
FEATURES OF DIVISIBILITY
Zapis prezentacji:

Optimization Michał Drobot Technical Art Director Reality Pump

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

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.

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; }

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?

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

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ę

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ć

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) …

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ą

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

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

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

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

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

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

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;

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

Questions ?