Upload
microsoft
View
515
Download
0
Tags:
Embed Size (px)
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
Citation preview
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
@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
@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
@nutchad
Merci à Alex & Pierre (Microsoft) et aux collègues ;-)
Retrouvez-nous sur le stand 58
Jérémy Alles
MVP / WPF Disciples
@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