Boostez votre application                                      Windows Phone 8                                  Charlotte ...
PrésentationCharlotte Gaidon                      Jérémy Alles   Formatrice WPF / Silverlight            MVP / WPF Discipl...
Agenda• Quoi de neuf WP8 ?• Sans les mains !• Avec un peu de bonne volonté !• Pour les plus courageux !     13/02/2013   B...
Quoi de neuf docteur ?CE QUI CHANGE AVEC WP8     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 8     Recoupement entre l...
Et mes applis ?                               bit.ly/perfwp8-upgradeCompatibilité avec les 120 000 applis existantes !    ...
Nouveau hardware• dual-core 1024 Mo de RAM  – devices           puissants  – encore            d’intérêt à paralléliser •...
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’ému...
Profiling et MonitoringVS2012 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 ...
Economie d’énergie•   Utiliser la compression GZip bit.ly/perfwp8-gzip•   Regrouper les requêtes web•   Thème foncé vs thè...
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           ...
Sit down and relax        SANS LES MAINS !Boostez votre application WP8 – Sans les mains ! votre application WP8          ...
Les compteurs Composition thread frame           rate                    • Fill Rate    UI thread frame rate              ...
Gains en performances•   Progress Bar•   Panorama•   LongListSelector•   ViewPortControl     – Off thread input        13/...
Accrochez-vous COMPILATION DANS LE     13/02/2013    Boostez votre application WP8   20
Du code C# au code machineDevice Développeur                                           Compilateur                 Interme...
Génération et utilisation du code machine • Avantages   – Le code IL est indépendant de la machine   – On ne compile pas l...
Une solution ?• Ne plus faire de code IL ?• Faire le JIT « à l’avance » ?• Ce n’est pas une idée nouvelle : NGEN  – Exempl...
NGEN                    Compilateur            Intermediate  Code C#                                                 NGEN ...
NGEN : oui, mais…                                 Mscorlib.dll                 App1.exe                                   ...
NGEN : oui, mais…                                 Mscorlib.dll                 App1.exe                                   ...
NGEN : oui, mais…                                 Mscorlib.dll                 App1.exe                                   ...
De quoi a-t-on besoin ?• Un démarrage rapide  – Supprimer le coût du JIT au démarrage• Déploiement facile et rapide  – Tem...
Recompilation en cascade : pourquoi ?class Base                                                          0x0   MethodTable...
int foo(int a) { return a + j; }                                                   0x0   MethodTable                      ...
Evolution de la classe mèreclass Base                                                      0x0   MethodTable       int    ...
Le code généré devient invalide                   L’offset devrait                      être 0x10 !                       ...
Idée : marquer les potentielschangements…                  Remplacé via une                    étape de link              ...
Résumé : MDIL• Compiler ce qui ne changera jamais directement• Ajouter des tokens pour ce qui pourra changer• Remplacer le...
Pourquoi compilation « dans le nuage » ?    C# Source                               MSIL               MDIL              M...
De quoi avait-on besoin ?• Un démarrage rapide• Déploiement facile et rapide• Pouvoir gérer les mises à jour de l’OS     1...
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                      bit.ly/perfwp8-memory  – Mesurer la consommation mémoire...
démoCompteur mémoireSLIDE SHOW    13/02/2013     Boostez votre application WP8   40
Fast-App-ResumeDÉMARRAGE ÉCLAIR     13/02/2013   Boostez votre application WP8   41
démoMulti-taskingWP7 VS W8     13/02/2013   Boostez votre application WP8   42
Fast-App-Switching ou Fast-App-Resume?                 Switch                          Création d’une nouvelle instance  ...
démoFast-App-ResumeWP7 VS WP8     13/02/2013   Boostez votre application WP8   44
2 stratégies pour le Fast ResumeQue se passe-t-il si on presse le bouton « back » juste aprèsun fast resume ?  1. Afficher...
Limitation du Fast Resume• Pas disponible pour applis Direct3D• Pas disponible pour WP7.8• Mise à jour d’une tuile à la so...
POUR LES PLUS COURAGEUX  13/02/2013   Boostez votre application WP8   47
“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 S...
Cas d’utilisation C++     1            Portabilité                  Performance     2            Réutilisation     3     1...
Le SDK 8.0 ouvre la voie au code natifDifférents scénarios  – 100% natif : application Direct3D  – Hybride natif/managé   ...
Support du C++ dans Windows Phone 8RValue references                Forward declared enums                          Bidire...
démoC# vs C++FILTRE DE CONTRASTE     13/02/2013   Boostez votre application WP8   52
démoInterop XAML / D3DUN CUBE QUI TOURNE !     13/02/2013      Boostez votre application WP8   53
Réveillez-vous !CONCLUSION      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 co...
L’Accélérateur Windows                Ressources                Coaching                Visibilité                        ...
Merci !Charlotte Gaidon                    Jérémy Alles                 2day-app.com    Formatrice WPF / Silverlight      ...
Donnez votre avis !                   Depuis votre smartphone, sur :                    http://notes.mstechdays.fr    De n...
Développeurs                                                         Pros de l’IT http://aka.ms/generation-app       Forme...
Prochain SlideShare
Chargement dans... 5
×

Booster votre application Windows Phone 8

549

Published on

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

0 commentaires
0 mentions J'aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Be the first to like this

Aucun téléchargement
Vues
Total des vues
549
Sur Slideshare
0
À partir des ajouts
0
Nombre d'ajouts
0
Actions
Partages
0
Téléchargements
8
Commentaires
0
J'aime
0
Ajouts 0
No embeds

No notes for slide
  • Intro Phone / Mobilité
  • Notation
  • Transcript of "Booster votre application Windows Phone 8"

    1. 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/perfwp7Boostez votre application WP8
    2. 2. PrésentationCharlotte 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. 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. 4. Quoi de neuf docteur ?CE QUI CHANGE AVEC WP8 13/02/2013 Boostez votre application WP8 4
    5. 5. Flashback 13/02/2013 Boostez votre application WP8 5
    6. 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. 7. Et mes applis ? bit.ly/perfwp8-upgradeCompatibilité 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. 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
    9. 9. NOUVEAUX OUTILS 13/02/2013 Boostez votre application WP8 9
    10. 10. 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
    11. 11. Profiling et MonitoringVS2012 apporte des nouveautés 13/02/2013 Boostez votre application WP8 11
    12. 12. 13/02/2013 Boostez votre application WP8 12
    13. 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. 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
    15. 15. Simulation Dashboard• Connexion réseau• Ecran de verrouillage• Rappel 13/02/2013 Boostez votre application WP8 15
    16. 16. C# Async  bit.ly/perfwp8-async 13/02/2013 Boostez votre application WP8 16
    17. 17. Sit down and relax SANS LES MAINS !Boostez votre application WP8 – Sans les mains ! votre application WP8 13/02/2013 Boostez 17
    18. 18. Les compteurs Composition thread frame rate • Fill Rate UI thread frame rate – WP7 : limite entre 2 et 4 – WP8 : limite entre 5 et 6 Texture memory usage Surface counter Current.Host.Settings.EnableFrameRateCounter Current.Host.Settings.EnableRedrawRegionsIntermediate surface counter Screen fill rate counter 13/02/2013 Boostez votre application WP8 18
    19. 19. Gains en performances• Progress Bar• Panorama• LongListSelector• ViewPortControl – Off thread input 13/02/2013 Boostez votre application WP8 19
    20. 20. Accrochez-vous COMPILATION DANS LE 13/02/2013 Boostez votre application WP8 20
    21. 21. Du code C# au code machineDevice Développeur Compilateur Intermediate Code C# C# Language Compilateur Code machine JIT 13/02/2013 Boostez votre application WP8 21
    22. 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. 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
    24. 24. NGEN Compilateur Intermediate Code C# NGEN C# LanguageCode machine 13/02/2013 Boostez votre application WP8 24
    25. 25. NGEN : oui, mais… Mscorlib.dll App1.exe Library.dll App2.exe 13/02/2013 Boostez votre application WP8 25
    26. 26. NGEN : oui, mais… Mscorlib.dll App1.exe Library.dll App2.exe 13/02/2013 Boostez votre application WP8 26
    27. 27. NGEN : oui, mais… Mscorlib.dll App1.exe Library.dll App2.exe 13/02/2013 Boostez votre application WP8 27
    28. 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. 29. Recompilation en cascade : pourquoi ?class Base 0x0 MethodTable int 0x4 i string 0x8 s virtual voidclass AppDerived 0x0 MethodTable 0x4 i int 0x8 s int int return 0xC j 13/02/2013 Boostez votre application WP8 29
    30. 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. 31. Evolution de la classe mèreclass Base 0x0 MethodTable int string 0x4 i int virtual void 0x8 s 0xC k 13/02/2013 Boostez votre application WP8 31
    32. 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. 33. Idée : marquer les potentielschangements… Remplacé via une étape de link supplémentaire 13/02/2013 Boostez votre application WP8 33
    34. 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. 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. 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. 37. Comment tester ?• Avoir un vrai device  13/02/2013 Boostez votre application WP8 37
    38. 38. AVEC UN PEU DE BONNE VOLONTÉ! 13/02/2013 Boostez votre application WP8 38
    39. 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
    40. 40. démoCompteur mémoireSLIDE SHOW 13/02/2013 Boostez votre application WP8 40
    41. 41. Fast-App-ResumeDÉMARRAGE ÉCLAIR 13/02/2013 Boostez votre application WP8 41
    42. 42. démoMulti-taskingWP7 VS W8 13/02/2013 Boostez votre application WP8 42
    43. 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
    44. 44. démoFast-App-ResumeWP7 VS WP8 13/02/2013 Boostez votre application WP8 44
    45. 45. 2 stratégies pour le Fast ResumeQue se passe-t-il si on presse le bouton « back » juste aprèsun 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. 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. 47. POUR LES PLUS COURAGEUX 13/02/2013 Boostez votre application WP8 47
    48. 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. 49. Cas d’utilisation C++ 1 Portabilité Performance 2 Réutilisation 3 13/02/2013 Boostez votre application WP8 49
    50. 50. Le SDK 8.0 ouvre la voie au code natifDiffé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. 51. Support du C++ dans Windows Phone 8RValue references Forward declared enums Bidirectional fencesstatic_assert Alignment Data-dependency ordering • Visual C++ 2012Auto Standard-layout and trivial types exception_ptrTrailing return types Extended friend declarations Thread-local storage • Idem qu’avec Windows 8Lambdas Local and unnamed types as template arguments __func__ • Nouvelles fonctionnalités C++11Decltype Range-based for-loop C99 preprocessorRight angle brackets override and final long longextern templates Minimal GC supportnullptr AtomicsStrongly typed enums Strong compare and exchange 13/02/2013 Boostez votre application WP8 51
    52. 52. démoC# vs C++FILTRE DE CONTRASTE 13/02/2013 Boostez votre application WP8 52
    53. 53. démoInterop XAML / D3DUN CUBE QUI TOURNE ! 13/02/2013 Boostez votre application WP8 53
    54. 54. Réveillez-vous !CONCLUSION 13/02/2013 Boostez votre application WP8 54
    55. 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. 56. L’Accélérateur Windows Ressources Coaching Visibilité aka.ms/accelerateur-windows Plus d’info ? RDV stand Windows 8Accélérateur Windows
    57. 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.frMerci à Alex & Pierre (Microsoft) et aux collègues ;-)Retrouvez-nous sur le stand 58 13/02/2013 Boostez votre application WP8 57
    58. 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 TechDayshttp://notes.mstechdays.fr
    59. 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 accompagnerWindows 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
    1. Gostou de algum slide específico?

      Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

    ×