Diabeł tkwi w szczegółach

Slides:



Advertisements
Podobne prezentacje
Standardowa biblioteka języka C++
Advertisements

Wzorce.
Języki programowania C++
Kamil Smitkiewicz Bezpieczeństwo w PHP.
Wydajne aplikacje na platformie .NET
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
11 Poprawne modele zawartości. Zarządzanie zmianami struktury.
Odśmiecanie Grzegorz Timoszuk
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 Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
Podstawy informatyki Wirtotechnologia – Funkcje Grupa: 1A
Systemy operacyjne.
1 Kryteria wyboru systemów: Przystępując do procesu wdrażania zintegrowanego systemu zarządzania, należy odpowiedzieć na następujące pytania związane z.
Microsoft WinFS – nowy system plików, zasada działania. Wojtek Galek.
Dalsze elementy metodologii projektowania. Naszym celem jest...
Schemat Hornera Mgr inż. Michał Szucki.
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
Modelowanie w Visual Studio 2010
Microsoft Lync Server Efektywna komunikacja. Konferencje internetowe.
Wstęp do eksploracji danych
TBD - P ERFORMANCE W BAZACH M ICROSOFT SQL S ERVER, CZYLI O CO W TYM W OGÓLE CHODZI Michał Grodzicki MCTS SQL SERVER lipca 2012.
Podstawy programowania
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
Tablice, listy, obiekty w C# i nie tylko!
Podstawy programowania
Programowanie strukturalne i obiektowe
Wyrażenia algebraiczne
Przegląd podstawowych algorytmów
TABLICE C++.
System zamawiania on-line
Witold Bołt m.
Wykonywanie kopii bezpieczeństwa danych
Instrukcja USOS Ankiety wersja by Marek Opacki.
Wzorce slajdów, animacje, różne orientacje slajdów
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
A-priori Partition Mateusz Mor, Kasper Rzepecki, Daniel Mendalka, Michał Samsonowski.
Proste obliczenia w arkuszu
Podstawy informatyki 2013/2014
Liczby całkowite dodatnie BCN
Asseco Poland S.A. dla banków spółdzielczych
Autor: Joanna Barańska Promotor: dr inż. Paweł Figat Konsultant:
Title Slide 1 It starts with you
„Równania są dla mnie ważniejsze, gdyż polityka jest czymś istotnym tylko dzisiaj, a równania są wieczne.” Albert Einstein.
Współpraca z innymi aplikacjami. Organizacja informacji 10 XII 2013.
Ujarzmić Worda Agnieszka Terebus.
Program użytkowania w domu Microsoft® Office Professional Plus
Urządzenia 1 mld smartfonów do 2016 r., 350 mln z nich jest używanych w pracy Ludzie 82 % populacji online korzysta z sieci społecznościowych Chmura.
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Sprawdzanie poczty głosowej 1.Kliknij kartę Telefon. Zostaną wyświetlone wiadomości i informacje o osobach dzwoniących. 2.Zatrzymaj wskaźnik na wiadomości.
Podstawy języka skryptów
Jak wykonać prosty licznik odwiedzin strony internetowej?
POUFNE. Dystrybucja wyłącznie do partnerów objętych umową o zachowaniu poufności. Firma Microsoft nie udziela żadnych gwarancji, wyraźnych ani domniemanych.
© 2012 Microsoft Corporation. Wszelkie prawa zastrzeżone. Dodawanie kontaktu Lista Kontakty upraszcza komunikację i umożliwia sprawdzenie statusu obecności.
Znajdowanie pokoju i wchodzenie do niego Skorzystaj z funkcji wyszukiwania programu Lync w celu znalezienia pokojów, do których masz dostęp. 1.W oknie.
Operacje na plikach i folderach
Podręczna karta informacyjna dotycząca funkcji wideo Rozpoczynanie połączenia wideo 1.Zatrzymaj wskaźnik na zdjęciu kontaktu i kliknij przycisk kamery.
1. Adres względny 2. Adres bezwzględny 3. Adres mieszany.
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
1 Co nowego w i-cut Suite i-cut Layout 14.0.
Visual Basic przygotował Michał Miłek Visual Basic – język programowania wysokiego poziomu i narzędzie programistyczne firmy Microsoft. Składnia jest oparta.
Projektowanie skalowalnych architektur z wykorzystaniem zaawansowanych technik DDD Michał Mac macmichal.pl.
WYSZUKIWANIE I OPTYMALIZACJA TRAS DLA URZĄDZEŃ MOBILNYCH ANDROID W OPARCIU O SIEĆ/GRAF DOSTĘPNYCH DRÓG Piotr Dąbrowski, Tomasz Pyśk, Piotr Wojciechowski.
Zmienne typy danych w VBA. MS Excel – typy danych w języku programowania VBA.
Technika Mikroprocesorowa 1
Zapis prezentacji:

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

O nas

Kontakt z prelegentem Michał Jankowski Starszy Inżynier Oprogramowania | Tieto Poland mail: jankowski.m@gmail.com www: http://www.jankowskimichal.pl Kamil Kowalski mail: kamil.k.kowalski@gmail.com

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

Plan prezentacji Krótki wstęp teoretyczny Przykłady, przykłady, przykłady Dyskusja

Teoria

Kryteria oceny aplikacji Satysfakcja Wygląd Funkcjonalność Niezawodność Płynność działania Cena

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ć

Scenariusz 1 Konwersja obrazu na odcienie szarości

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.

Scenariusz 1 Demo

Pierwotna implementacja Obiektowość Czytelność Poprawnie napisany kod. Dobry podział na metody. Średnie czasy wykonywania: Emulator 512 MB 77,51 ms Lumia 800 298,34 ms HTC PRO 321,18 ms HTC Mozart 328,58 ms HTC Titan 278,73 ms LG-C900 338,04 ms

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

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.

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 961 202 do 0. Niektóre elementy nie są optymalizowane i za każdym razem są wyliczane.

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ć: 480 000 operacji dodawania, 600 operacji mnożenia.

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.

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.

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 800 298,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-C900 338,04 ms -> 30,10 ms

Scenariusz 2 Wyszukiwanie kontaktów

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.

Scenariusz 2 Demo

Pierwotna implementacja Profesjonalny Czytelny Obiektowy napisany kod korzystający z LINQ, stworzony wg. zalecanych wzorców. Średnie czasy wykonywania: Lumia 800 14 111,76 ms HTC PRO 18 790,90 ms HTC Mozart 19 051,95 ms HTC Titan 14 123,95 ms LG-E900 18 827,45 ms

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.

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

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 800 14 111,76 ms -> 501,1 ms HTC PRO 18 790,90 ms -> 585,3 ms HTC Mozart 19 051,95 ms -> 507,4 ms HTC Titan 14 123,95 ms -> 602,6 ms LG-E900 18 827,45 ms -> 612,5 ms

Podsumowanie

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

Dyskusja Materiały będą dostępne na stronie: http://www.jankowskimichal.pl/2012/10/mts-2012-materialy

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.

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: 29.10.2012 12.30 – 13.30 30.10.2012 17.00 – 18.00

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