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
1. Boostez votre application
Windows Phone 8
Charlotte GAIDON, Jérémy ALLES
Pôle expertise Microsoft Grenoble
THALES
APP103
www.2day-app.com
bit.ly/perfwp7
Boostez votre application WP8
2. Présentation
Charlotte Gaidon Jérémy Alles
Formatrice WPF / Silverlight MVP / WPF Disciples
charlotte.gaidon@gmail.com jeremy.alles@live.com
@nutchad @jalpf
www.japf.fr
Cœur de métier : applications industrielles
Agence de 200 collaborateurs à Grenoble
Pôle d’expertise sur les technologies Microsoft
13/02/2013 Boostez votre application WP8 2
3. 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
4. Quoi de neuf docteur ?
CE QUI CHANGE AVEC WP8
13/02/2013 Boostez votre application WP8 4
6. Nouveau noyau
• Windows Phone 7 : noyau CE de Windows
Mobile
• Windows Phone 8 : noyau NT Windows 8
Recoupement entre les runtimes « Desktop » et « Phone »
Shared
API
13/02/2013 Boostez votre application WP8 6
7. Et mes applis ? bit.ly/perfwp8-upgrade
Compatibilité avec les 120 000 applis existantes !
Upgrade to WP8
WP7.x App WP8 App
Quirks Mode
Shim
WP8 Runtime
13/02/2013 Boostez votre application WP8 7
8. Nouveau hardware
• dual-core 1024 Mo de RAM
– devices puissants
– encore d’intérêt à paralléliser
• résolutions plus grandes
• 2 formats possibles
Application.Current.Host.Content.ScaleFactor
13/02/2013 Boostez votre application WP8 8
13. 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
bit.ly/perfwp7
– TranslateTransform vs animation Margin
13/02/2013 Boostez votre application WP8 13
14. Economie d’énergie
• Utiliser la compression GZip bit.ly/perfwp8-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
21. Du code C# au code machine
Device Développeur
Compilateur Intermediate
Code C#
C# Language
Compilateur
Code machine
JIT
13/02/2013 Boostez votre application WP8 21
22. 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
23. 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
28. 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
29. Recompilation en cascade : pourquoi ?
class Base
0x0 MethodTable
int 0x4 i
string 0x8 s
virtual void
class AppDerived
0x0 MethodTable
0x4 i
int
0x8 s
int int return
0xC j
13/02/2013 Boostez votre application WP8 29
30. int foo(int a) { return a + j; }
0x0 MethodTable
0x4 i
0x8 s
0xC j
13/02/2013 Boostez votre application WP8 30
31. Evolution de la classe mère
class Base
0x0 MethodTable
int
string 0x4 i
int
virtual void 0x8 s
0xC k
13/02/2013 Boostez votre application WP8 31
32. Le code généré devient invalide
L’offset devrait
être 0x10 !
0x0 MethodTable
0x4 i
0x8 s
0xC k
0x10 j
13/02/2013 Boostez votre application WP8 32
33. Idée : marquer les potentiels
changements…
Remplacé via une
étape de link
supplémentaire
13/02/2013 Boostez votre application WP8 33
34. 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
35. Pourquoi compilation « dans le nuage » ?
C# Source MSIL MDIL MDIL
Code C# Compiler Assembly Assembly
Compiler
Téléchargement sur
le device
Cette partie se
passe “dans le
cloud” !
MDIL Native Native
Assembly Image DLL Exécution
Generator
13/02/2013 Boostez votre application WP8 35
36. 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
37. Comment tester ?
• Avoir un vrai device
13/02/2013 Boostez votre application WP8 37
38. AVEC UN PEU DE BONNE VOLONTÉ
!
13/02/2013 Boostez votre application WP8 38
39. La consommation mémoire
• Respecter la limite bit.ly/perfwp8-memory
– Mesurer la consommation mémoire
• 2 nouveaux paramètres de BitmapImage
– DecodePixelWidth
– DecodePixelHeight
13/02/2013 Boostez votre application WP8 39
43. Fast-App-Switching ou Fast-App-Resume
?
Switch
Création d’une nouvelle instance
Resume
Reprise de l’instance suspendue
13/02/2013 Boostez votre application WP8 43
45. 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
46. 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
47. POUR LES PLUS COURAGEUX
13/02/2013 Boostez votre application WP8 47
48. “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)
UTILISER DU CODE NATIF
13/02/2013 Boostez votre application WP8 48
49. Cas d’utilisation C++
1 Portabilité
Performance
2 Réutilisation
3
13/02/2013 Boostez votre application WP8 49
50. 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
51. Support du C++ dans Windows Phone 8
RValue references Forward declared enums Bidirectional fences
static_assert Alignment Data-dependency ordering
• Visual C++ 2012
Auto Standard-layout and trivial types exception_ptr
Trailing return types Extended friend declarations Thread-local storage
• Idem qu’avec Windows 8
Lambdas Local and unnamed types as template arguments __func__
• Nouvelles fonctionnalités C++11
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
13/02/2013 Boostez votre application WP8 51
55. 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
56. L’Accélérateur Windows
Ressources
Coaching
Visibilité
aka.ms/accelerateur-windows
Plus d’info ? RDV stand Windows 8
Accélérateur Windows
57. Merci !
Charlotte Gaidon Jérémy Alles 2day-app.com
Formatrice WPF / Silverlight MVP / WPF Disciples
charlotte.gaidon@gmail.com jeremy.alles@live.com
@nutchad @jalpf
www.japf.fr
Merci à Alex & Pierre (Microsoft) et aux collègues ;-)
Retrouvez-nous sur le stand 58
13/02/2013 Boostez votre application WP8 57
58. 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
59. Développeurs Pros de l’IT
http://aka.ms/generation-app Formez-vous en ligne www.microsoftvirtualacademy.com
http://aka.ms/evenements-
developpeurs Retrouvez nos évènements http://aka.ms/itcamps-france
Les accélérateurs
Faites-vous accompagner
Windows Azure, Windows Phone,
gratuitement
Windows 8
Essayer gratuitement nos http://aka.ms/telechargements
solutions IT
La Dev’Team sur MSDN Retrouver nos experts L’IT Team sur TechNet
http://aka.ms/devteam Microsoft http://aka.ms/itteam