Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Diabeł tkwi w szczegółach Tworzenie wysokowydajnych aplikacji dla Windows Phone Michał Jankowski Starszy Inżynier Oprogramowania Tieto Poland Kamil Kowalski.

Podobne prezentacje


Prezentacja na temat: "Diabeł tkwi w szczegółach Tworzenie wysokowydajnych aplikacji dla Windows Phone Michał Jankowski Starszy Inżynier Oprogramowania Tieto Poland Kamil Kowalski."— Zapis prezentacji:

1

2 Diabeł tkwi w szczegółach Tworzenie wysokowydajnych aplikacji dla Windows Phone Michał Jankowski Starszy Inżynier Oprogramowania Tieto Poland Kamil Kowalski Starszy Inżynier Oprogramowania Tieto Poland

3 O nas

4 Michał Jankowski Starszy Inżynier Oprogramowania | Tieto Poland mail: www: Kamil Kowalski Starszy Inżynier Oprogramowania | Tieto Poland mail: Kontakt z prelegentem

5 Po sesji będziesz wiedział na co należy zwracać uwagę, przy pisaniu wydajnych aplikacji na Windows Phone 7 Cel sesji

6 Plan prezentacji Krótki wstęp teoretycznyPrzykłady, przykłady, przykładyDyskusja

7 Teoria

8 Kryteria oceny aplikacji Satysfakcja WyglądFunkcjonalnośćNiezawodność Płynność działania Cena

9 Optymalizacja to (prawie) zawsze pewnego rodzaju kompromis – koncentrujemy się na jednym aspekcie: szybkość działania, zużycie pamięci, rozmiar; kosztem pozostałych. Szybkość działania aplikacji sprawdzamy na telefonie – emulator WP jest szybszy niż telefon. Badając wydajność aplikacji stosujemy metody statystyczne – jednokrotne sprawdzenie szybkość działania nie jest miarodajne. Do pomiarów wydajności stosujemy klasę StopWatch. Kod pod szczególnym nadzorem – reguła 90 / 10, czyli: 90% czasu działania aplikacji zależy od 10% jej kodu Cel to znaleźć te 10% kodu i je zoptymalizować Najlepsze praktyki

10 Scenariusz 1 Konwersja obrazu na odcienie szarości

11 Konwersja obrazu na odcienie szarości metodą bazującą na luminescencji: F(RGB -> Y) = 0,2125*czerwony + 0,7151*zielony + 0,0721*niebieski Sposób badania wydajności: warunki początkowe takie same dla każdego pomiaru, 1000 pomiarów, średnia arytmetyczna, odchylenie standardowe, testowane na różnych urządzeniach: Emulator 512 MB, Lumia 800, HTC PRO, HTC Mozart, HTC Titan, LG-C900. Studium przypadku

12 Scenariusz 1 Demo

13 Pierwotna implementacja Obiektowość Czytelność Poprawnie napisany kod. Dobry podział na metody. Średnie czasy wykonywania: Emulator 512 MB 77,51 ms Lumia ,34 ms HTC PRO321,18 ms HTC Mozart328,58 ms HTC Titan278,73 ms LG-C900338,04 ms

14 Dodawanie i mnożenie Lepiej dodawać niż mnożyć Zmiana kolejności pętli. Redukcja ilości obliczeń. Wersja pierwotna: operacji dodawania, operacji mnożenia. Wersja zmodyfikowana: operacji dodawania, 600 operacji mnożenia.

15 Metody statyczne Poprawna deklaracja metod w obiekcie Dodanie słowa kluczowego static w deklaracji metody. Potencjalnie można metody te przenieść do osobnej klasy. Inną możliwością jest rozszerzenie klasy Color.

16 Na skróty Niektóre wyrażenia nie są optymalizowane Przechowywanie obiektów i wartości w polach lokalnych. Ilość przeskoków w pamięci zmniejszona z do 0. Niektóre elementy nie są optymalizowane i za każdym razem są wyliczane.

17 Pętle Czasami niektóre operacje można zrobić prościej Zamiast dwóch pętli można wykorzystać jedną. Likwidacja indeksu pozycji pozwala zaoszczędzić: operacji dodawania, 600 operacji mnożenia.

18 Operacje bitowe i liczby całkowite Arytmetyka liczb całkowitych Przesunięcie vs. dzielenie Usunięcie niepotrzebnych operacji. Działania na liczbach całkowitych. Świadomość działania przykładów zaczerpniętych z Internetu. Precyzja - czy zawsze potrzebujemy bardzo dokładnych wyników? Zrozumienie mechanizmów występujących na platformie.

19 Nadmiarowa obiektowość i typ byte Kod wydajny nie zawsze jest czytelny Usunięcie zbędnych konwersji typów. Odpowiednie typy liczb całkowitych. Liczby typu byte są rozszerzane do int przed wykonaniem na nich operacji. Następnie wykonywane jest działanie. Na koniec z powrotem dokonywana jest konwersja do byte.

20 Podsumowanie optymalizacji Programiści przyzwyczaili się do wydajności platformy desktopowej. W przypadku urządzeń mobilnych trzeba zmienić sposób myślenia. Proste zmiany mogą wielokrotnie przyspieszyć działanie aplikacji. Średnie czasy wykonywania: Emulator 512 MB 77,51 ms-> 5,65 ms Lumia ,35 ms->21,97 ms HTC PRO321,18 ms->29,63 ms HTC Mozart328,56 ms->29,86 ms HTC Titan278,73 ms->21,01 ms LG-C900338,04 ms->30,10 ms

21 Scenariusz 2 Wyszukiwanie kontaktów

22 Wyszukiwanie kontaktów poprzez asynchroniczną metodę WP SDK SearchAsync a następnie tworzenie modelu do wykorzystania w aplikacji Sposób badania wydajności: warunki początkowe takie same dla każdego pomiaru – ponad 3000 kontaktów, 20 pomiarów, średnia arytmetyczna, odchylenie standardowe, testowane na różnych urządzeniach: Lumia 800, HTC PRO, HTC Mozart, HTC Titan, LG-E900. Studium przypadku

23 Scenariusz 2 Demo

24 Pierwotna implementacja Profesjonalny Obiektowy napisany kod korzystający z LINQ, stworzony wg. zalecanych wzorców. Średnie czasy wykonywania: Lumia ,76 ms HTC PRO18 790,90 ms HTC Mozart19 051,95 ms HTC Titan14 123,95 ms LG-E ,45 ms Czytelny

25 Zdrowy rozsądek Wygoda programisty Nowe elementy języka bardzo często wprowadzają dodatkowy narzut. Uproszczenie algorytmu: to samo, ale prościej i krócej. Płytkie kopiowanie tablicy. Pętla for zamiast LINQ i foreach. A wydajność

26 Cache vs dynamiczne doczytywanie danych Pomysł Spojrzenie na problem z innej strony. Kod wykorzystujący mechnizm cacheowania, aby uzyskać aplikację reagującą na akcje użytkownika. Nie wszystko da się zoptymalizować. Cache

27 Podsumowanie optymalizacji Redefinicja problemu pozwala na znalezienie alternatywnych rozwiązań. Kod dostosowany do wydajności platformy. Analiza zmienności danych może być podstawą do zmiany sposobu myślenia. Średnie czasy wykonywania: Lumia ,76 ms ->501,1 ms HTC PRO18 790,90 ms ->585,3 ms HTC Mozart19 051,95 ms ->507,4 ms HTC Titan14 123,95 ms ->602,6 ms LG-E ,45 ms ->612,5 ms

28 Podsumowanie

29 Program należy testować na jak największej ilości telefonów W momencie wyboru elementu do optymalizacji należy zastosować statystyczne podejście Wydajność aplikacji powinna być ważniejsza niż czytelność kodu Czasami warto zastanowić się nad zmianą definicji problemu: Zamiast Math.Sqrt(x*x+y*y) > 10 użyć x*x+y*y > 100 Warto zapamiętać

30 Materiały będą dostępne na stronie: Dyskusja

31 Organizatorzy MTS czytają wszystkie ankiety. Dzięki nim masz realny wpływ na konferencję oraz merytorykę i prelegentów kolejnego MTS. Wystarczy 5 minut Twojego czasu na wypełnienie ankiety! Masz szansę wygrać m.in. wejściówkę na MTS 2013 (25x) oraz inne nagrody. Gdzie i jak? Ankiety dostępne są online – na stronie konferencji (konferencjamts.pl) Można je wypełnić od dziś, aż do 11 listopada 2012 Wypełnij ankietę i wygraj nagrody!

32 Strefa ATE dostępna jest w strefie Partnerów Zapraszamy wszystkich zainteresowanych poszerzeniem wiedzy Eksperci będą do Państwa dyspozycji Będziemy tam: – – Strefa Ekspertów (ATE)

33 © 2012 Microsoft Corporation. Wszelkie prawa zastrzeżone. Microsoft, Windows oraz inne nazwy produktów są lub mogą być znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Microsoft w Stanach Zjednoczonych i innych krajach. Zamieszczone informacje mają charakter wyłącznie informacyjny. FIRMA MICROSOFT NIE UDZIELA ŻADNYCH GWARANCJI (WYRAŻONYCH WPROST LUB DOMYŚLNIE), W TYM TAKŻE USTAWOWEJ RĘKOJMI ZA WADY FIZYCZNE I PRAWNE, CO DO INFORMACJI ZAWARTYCH W TEJ PREZENTACJI.


Pobierz ppt "Diabeł tkwi w szczegółach Tworzenie wysokowydajnych aplikacji dla Windows Phone Michał Jankowski Starszy Inżynier Oprogramowania Tieto Poland Kamil Kowalski."

Podobne prezentacje


Reklamy Google