Booster votre application Windows Phone 8

Post on 08-Jul-2015

513 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

A l'heure des interfaces naturelles, vos utilisateurs attendent de votre application qu'elle soit particulièrement réactive. Sur la base de retours d'expériences, nous verrons comment votre application peut consommer moins de mémoire et solliciter moins le processeur, et répondre aux moindres sollicitations. De l'utilisation de l'analyseur de performances à l'implémentation de trucs et astuces, vous repartirez de cette session avec le plein d'idées pour améliorer les performances de votre application

Transcript

Boostez votre application

Windows Phone 8Charlotte GAIDON, Jérémy ALLES

Pôle expertise Microsoft Grenoble

THALES

APP103

www.2day-app.com

Boostez votre application WP8

bit.ly/perfwp7

Charlotte Gaidon

Formatrice WPF / Silverlight

charlotte.gaidon@gmail.com

@nutchad

Cœur de métier : applications industrielles

Agence de 200 collaborateurs à Grenoble

Pôle d’expertise sur les technologies Microsoft

Présentation

Jérémy Alles

MVP / WPF Disciples

jeremy.alles@live.com

@jalpf

www.japf.fr

Boostez votre application WP8 213/02/2013

Agenda

• Quoi de neuf WP8 ?

• Sans les mains !

• Avec un peu de bonne volonté !

• Pour les plus courageux !

13/02/2013 Boostez votre application WP8 3

CE QUI CHANGE AVEC WP8

Quoi de neuf docteur ?

13/02/2013 Boostez votre application WP8 4

Flashback

13/02/2013 Boostez votre application WP8 5

Nouveau noyau

• Windows Phone 7 : noyau CE de Windows

Mobile

• Windows Phone 8 : noyau NT Windows 8Recoupement entre les runtimes « Desktop » et « Phone »

SharedAPI

13/02/2013 Boostez votre application WP8 6

Et mes applis ?

Compatibilité avec les 120 000 applis existantes !

WP8 Runtime

WP8 AppWP7.x App

Quirks Mode

Shim

Upgrade to WP8

bit.ly/perfwp8-upgrade

13/02/2013 Boostez votre application WP8 7

• dual-core 1024 Mo de RAM– devices puissants

– encore d’intérêt à paralléliser

• résolutions plus grandes

• 2 formats possibles

Nouveau hardware

Application.Current.Host.Content.ScaleFactor

13/02/2013 Boostez votre application WP8 8

NOUVEAUX OUTILS

13/02/2013 Boostez votre application WP8 9

Nouvel émulateur

• Différentes caractéristiques de device

• Hyper-V (processeur SLAT requis)

• Attention aux perfs dans l’émulateur WP7

13/02/2013 Boostez votre application WP8 10

Profiling et Monitoring

VS2012 apporte des nouveautés

13/02/2013 Boostez votre application WP8 11

13/02/2013 Boostez votre application WP8 12

Rappel des bonnes pratiques

• Limiter la taille de l’arbre visuel

• Fuites mémoire : attention aux events !

• Tirer parti du thread compositor– ScaleTransform vs animation FontSize

– TranslateTransform vs animation Margin

13/02/2013 Boostez votre application WP8 13

bit.ly/perfwp7

Economie d’énergie

• Utiliser la compression GZip

• Regrouper les requêtes web

• Thème foncé vs thème clair

• JPEG plus économe que PNG

13/02/2013 Boostez votre application WP8 14

bit.ly/perfwp8-gzip

Simulation Dashboard

• Connexion réseau

• Ecran de verrouillage

• Rappel

13/02/2013 Boostez votre application WP8 15

C# Async bit.ly/perfwp8-async

13/02/2013 Boostez votre application WP8 16

Boostez votre application WP8 – Sans les mains !

SANS LES MAINS !

Sit down and relax

13/02/2013 Boostez votre application WP8 17

• Fill Rate– WP7 : limite entre 2 et 4

– WP8 : limite entre 5 et 6

Surface counter

UI thread frame rate

Texture memory usage

Composition thread frame

rate

Screen fill rate counter

Intermediate surface counter

13/02/2013 Boostez votre application WP8 18

Les compteurs

Current.Host.Settings.EnableFrameRateCounter

Current.Host.Settings.EnableRedrawRegions

Gains en performances

• Progress Bar

• Panorama

• LongListSelector

• ViewPortControl– Off thread input

13/02/2013 Boostez votre application WP8 19

COMPILATION DANS LE

Accrochez-vous

13/02/2013 Boostez votre application WP8 20

Du code C# au code machine

Code machine

Compilateur

C#

Compilateur

JIT

Dev

ice

Intermediate

LanguageCode C#

Dév

elo

pp

eur

13/02/2013 Boostez votre application WP8 21

Génération et utilisation du code machine

• Avantages– Le code IL est indépendant de la machine

– On ne compile pas le code dont on ne se sert pas

• Inconvénients– Ajoute un surcoût à l’exécution

– Handicap pour le temps de démarrage des applications

13/02/2013 Boostez votre application WP8 22

Une solution ?

• Ne plus faire de code IL ?

• Faire le JIT « à l’avance » ?

• Ce n’est pas une idée nouvelle : NGEN– Exemple : Paint.Net

13/02/2013 Boostez votre application WP8 23

NGEN

Code machine

Compilateur

C#NGEN

Intermediate

LanguageCode C#

13/02/2013 Boostez votre application WP8 24

NGEN : oui, mais…

Mscorlib.dll

App1.exeLibrary.dll

App2.exe

13/02/2013 Boostez votre application WP8 25

NGEN : oui, mais…

Mscorlib.dll

App1.exeLibrary.dll

App2.exe

13/02/2013 Boostez votre application WP8 26

NGEN : oui, mais…

Mscorlib.dll

App1.exeLibrary.dll

App2.exe

13/02/2013 Boostez votre application WP8 27

De quoi a-t-on besoin ?

• Un démarrage rapide– Supprimer le coût du JIT au démarrage

• Déploiement facile et rapide– Temps d’exécution de NGEN trop long

• Pouvoir gérer les mises à jour de l’OS– Ne pas perdre les images compilées après update

13/02/2013 Boostez votre application WP8 28

Recompilation en cascade : pourquoi ?class Base

int

string

virtual void

class AppDerived

int

int int return

0x0 MethodTable

0x4 i

0x8 s

0xC j

0x0 MethodTable

0x4 i

0x8 s

13/02/2013 Boostez votre application WP8 29

int foo(int a) { return a + j; }

13/02/2013 Boostez votre application WP8 30

0x0 MethodTable

0x4 i

0x8 s

0xC j

Evolution de la classe mère

class Base

int

string

int

virtual void

0x0 MethodTable

0x4 i

0x8 s

0xC k

13/02/2013 Boostez votre application WP8 31

L’offset devrait

être 0x10 !

Le code généré devient invalide

0x0 MethodTable

0x4 i

0x8 s

0xC k

0x10 j

13/02/2013 Boostez votre application WP8 32

Remplacé via une

étape de link

supplémentaire

Idée : marquer les potentiels

changements…

13/02/2013 Boostez votre application WP8 33

Résumé : MDIL

• Compiler ce qui ne changera jamais directement

• Ajouter des tokens pour ce qui pourra changer

• Remplacer les tokens au moment de l’install

• Mise à jour refaire l’édition de lien à nouveau

13/02/2013 Boostez votre application WP8 34

Pourquoi compilation « dans le nuage » ?

C# CompilerC# Source

Code

MSIL

AssemblyMDIL

Compiler

MDIL

Assembly

MDIL

Assembly

Téléchargement sur

le device

Native

Image

Generator

Native

DLL Exécution

Cette partie se

passe “dans le

cloud” !

13/02/2013 Boostez votre application WP8 35

De quoi avait-on besoin ?

• Un démarrage rapide

• Déploiement facile et rapide

• Pouvoir gérer les mises à jour de l’OS

13/02/2013 Boostez votre application WP8 36

Comment tester ?

• Avoir un vrai device

13/02/2013 Boostez votre application WP8 37

AVEC UN PEU DE BONNE VOLONTÉ

!

13/02/2013 Boostez votre application WP8 38

La consommation mémoire

• Respecter la limite– Mesurer la consommation mémoire

• 2 nouveaux paramètres de BitmapImage– DecodePixelWidth

– DecodePixelHeight

bit.ly/perfwp8-memory

13/02/2013 Boostez votre application WP8 39

SLIDE SHOW

Compteur mémoire

démo

13/02/2013 Boostez votre application WP8 40

DÉMARRAGE ÉCLAIR

Fast-App-Resume

13/02/2013 Boostez votre application WP8 41

WP7 VS W8

Multi-tasking

démo

13/02/2013 Boostez votre application WP8 42

Fast-App-Switching ou Fast-App-Resume

?

Création d’une nouvelle instance

Reprise de l’instance suspendue

Switch

Resume

13/02/2013 Boostez votre application WP8 43

WP7 VS WP8

Fast-App-Resume

démo

13/02/2013 Boostez votre application WP8 44

2 stratégies pour le Fast Resume

Que se passe-t-il si on presse le bouton « back » juste après un fast resume ?

1. Afficher la dernière page visitée : « resume experience »annuler la navigation : e.Cancel = true;

2. Quitter l’application : « fresh instance experience »vider la back stack : RootFrame.RemoveBackEntry()

13/02/2013 Boostez votre application WP8 45

Limitation du Fast Resume

• Pas disponible pour applis Direct3D

• Pas disponible pour WP7.8

• Mise à jour d’une tuile à la sortie de l’appli– Deactivated

– OnNavigationFrom

• Speech recognition

13/02/2013 Boostez votre application WP8 46

POUR LES PLUS COURAGEUX

13/02/2013 Boostez votre application WP8 47

UTILISER DU CODE NATIF

“C makes it easy to shoot yourself in the foot; C++ makes it harder,

but when you do it blows your whole leg off” (Bjarne Stroustrup)

13/02/2013 Boostez votre application WP8 48

Cas d’utilisation C++

1

2

3

Performance

Réutilisation

Portabilité

13/02/2013 Boostez votre application WP8 49

Le SDK 8.0 ouvre la voie au code natif

Différents scénarios

– 100% natif : application Direct3D

– Hybride natif/managé

• Implémentation d’un traitement en C/C++

• Réutilisation d’une librairie existante

13/02/2013 Boostez votre application WP8 50

RValue references Forward declared enums Bidirectional fences

static_assert Alignment Data-dependency ordering

Auto Standard-layout and trivial types exception_ptr

Trailing return types Extended friend declarations Thread-local storage

Lambdas Local and unnamed types as template arguments __func__

Decltype Range-based for-loop C99 preprocessor

Right angle brackets override and final long long

extern templates Minimal GC support

nullptr Atomics

Strongly typed enums Strong compare and exchange

Support du C++ dans Windows Phone 8

• Visual C++ 2012

• Idem qu’avec Windows 8

• Nouvelles fonctionnalités C++11

13/02/2013 Boostez votre application WP8 51

FILTRE DE CONTRASTE

C# vs C++

démo

13/02/2013 Boostez votre application WP8 52

UN CUBE QUI TOURNE !

Interop XAML / D3D

démo

13/02/2013 Boostez votre application WP8 53

CONCLUSION

Réveillez-vous !

13/02/2013 Boostez votre application WP8 54

Conclusion

• Sans les mains– Compilation dans le cloud

• Avec un peu de bonne volonté– Fast-App-Resume

• Pour les plus courageux– Interop C++/DirectX/XAML

• Et un SDK 8.0 très riche en nouveautés

13/02/2013 Boostez votre application WP8 55

Accélérateur Windows

Ressources

Coaching

Visibilité

aka.ms/accelerateur-windows

Plus d’info ? RDV stand Windows 8

L’Accélérateur Windows

Merci !

Charlotte Gaidon

Formatrice WPF / Silverlight

charlotte.gaidon@gmail.com

@nutchad

Merci à Alex & Pierre (Microsoft) et aux collègues ;-)

Retrouvez-nous sur le stand 58

Jérémy Alles

MVP / WPF Disciples

jeremy.alles@live.com

@jalpf

www.japf.fr

2day-app.com

13/02/2013 Boostez votre application WP8 57

Donnez votre avis !

Depuis votre smartphone, sur :

http://notes.mstechdays.fr

De nombreux lots à gagner toutes les heures !!!

Claviers, souris et jeux Microsoft…

Merci de nous aider à améliorer les TechDays

http://notes.mstechdays.fr

Formez-vous en ligne

Retrouvez nos évènements

Faites-vous accompagner

gratuitement

Essayer gratuitement nos

solutions IT

Retrouver nos experts

Microsoft

Pros de l’ITDéveloppeurs

www.microsoftvirtualacademy.comhttp://aka.ms/generation-app

http://aka.ms/evenements-

developpeurshttp://aka.ms/itcamps-france

Les accélérateurs

Windows Azure, Windows Phone,

Windows 8

http://aka.ms/telechargements

La Dev’Team sur MSDN

http://aka.ms/devteam

L’IT Team sur TechNet

http://aka.ms/itteam

top related