Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
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
Kontakt z prelegentem Michał Jankowski
Starszy Inżynier Oprogramowania | Tieto Poland mail: www: Kamil Kowalski mail:
5
Cel sesji Po sesji będziesz wiedział na co należy zwracać uwagę, przy pisaniu wydajnych aplikacji na Windows Phone 7
6
Plan prezentacji Krótki wstęp teoretyczny
Przykłady, przykłady, przykłady Dyskusja
7
Teoria
8
Kryteria oceny aplikacji
Satysfakcja Wygląd Funkcjonalność Niezawodność Płynność działania Cena
9
Najlepsze praktyki 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ć
10
Scenariusz 1 Konwersja obrazu na odcienie szarości
11
F(RGB -> Y) = 0,2125*czerwony + 0,7151*zielony + 0,0721*niebieski
Studium przypadku 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.
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 PRO 321,18 ms HTC Mozart 328,58 ms HTC Titan 278,73 ms LG-C ,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 PRO 321,18 ms -> 29,63 ms HTC Mozart 328,56 ms -> 29,86 ms HTC Titan 278,73 ms -> 21,01 ms LG-C ,04 ms -> 30,10 ms
21
Scenariusz 2 Wyszukiwanie kontaktów
22
Studium przypadku 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.
23
Scenariusz 2 Demo
24
Pierwotna implementacja
Profesjonalny Czytelny Obiektowy napisany kod korzystający z LINQ, stworzony wg. zalecanych wzorców. Średnie czasy wykonywania: Lumia ,76 ms HTC PRO ,90 ms HTC Mozart ,95 ms HTC Titan ,95 ms LG-E ,45 ms
25
Zdrowy rozsądek Wygoda programisty A wydajność
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.
26
Cache vs dynamiczne doczytywanie danych
Pomysł Cache Spojrzenie na problem z innej strony. Kod wykorzystujący mechnizm cache’owania, aby uzyskać aplikację reagującą na akcje użytkownika. Nie wszystko da się zoptymalizować.
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 PRO ,90 ms -> 585,3 ms HTC Mozart ,95 ms -> 507,4 ms HTC Titan ,95 ms -> 602,6 ms LG-E ,45 ms -> 612,5 ms
28
Podsumowanie
29
Warto zapamiętać 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
30
Dyskusja Materiały będą dostępne na stronie:
31
Wypełnij ankietę i wygraj nagrody!
3/28/2017 5:07 AM Wypełnij ankietę i wygraj nagrody! 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 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
32
Strefa Ekspertów (ATE)
Strefa ATE dostępna jest w strefie Partnerów Zapraszamy wszystkich zainteresowanych poszerzeniem wiedzy Eksperci będą do Państwa dyspozycji Będziemy tam: – 13.30 – 18.00
33
© 2012 Microsoft Corporation. Wszelkie prawa zastrzeżone.
3/28/2017 5:07 AM © 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. © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.