Donnez votre avis !                   Depuis votre smartphone, sur :                    http://notes.mstechdays.fr    De n...
10 tips pour améliorer les                 performances de vos             applications Windows 8    Nicolas Antoine      ...
10 tips pour améliorer les                 performances de vos             applications Windows 8    Nicolas Antoine      ...
Pourquoi une App performante ?              EXPÉRIENCE              UTILISATEURCode / Développement
Pourquoi une App performante ?     • Expérience utilisateur          – Les fonctionnalités ne font pas tout          – Pas...
Tip 1        C++ LES BASESCode / Développement
Tip 1 (Bis)        AMÉLIORER SUSPEND / RESUMECode / Développement
Cycle de vie de votre App     • Etat d’exécution de l’App                Activated               Suspending               ...
La bonne sauvegarde au bon moment     • App Data          – Persiste entre plusieurs sessions          – Sauvegarde incrém...
DémoTip 1 { Sauvegarde et restauration }
Tip 2        ASYNC / AWAITCode / Développement
async / await sous le capot     • Introduit avec .Net 4.5 (C# 5 et VB 5)     • Asynchronisme généré par le compilateur    ...
DémoTip 2 { async / await sous le capot }
Exécution asynchrone, mais pas parallèle  Async work                        Await      AwaitAsync method   UI thread  Asyn...
DémoTip 2 { Asynchronisme et parallélisme }
Tip 3        « HELLO, I SUPPORT INCREMENTAL LOADING »Code / Développement
Chargement incrémental des données     • Inutile de charger des milliers d’éléments     • Il faut charger les données lors...
DémoTip 3 { ISupportIncrementalLoading }
Tip 4        CACHER LESCode / Développement
Tip 4        CACHER LES RESSOURCESCode / Développement
Tip 4        MISE EN CACHE DES RESSOURCESCode / Développement
Les ressources     • Ne chargez vos ressoures que si besoin     • Ressources ré-utilisées = ressources en cache     • Mini...
Tip 5        OPTIMISER LES ANIMATIONSCode / Développement
Un peu de théorie…     • Pour le rendu XAML Il y a 2 threads importants :          – Le thread UI          – Le thread Com...
2 types d’animations     • Animations dépendantes :          – Utilisation intensive du thread UI          – Exemples : ch...
Un peu de DebugSettings     • Propriété EnableFrameRateCounter     • Affiche les compteurs de performance         Thread C...
DémoTip 5 { Animation dépendantes vs. indépendantes }
Tip 6        OPTIMISATIONS XAMLCode / Développement
Quest-ce qui prend du temps ?     • Thread UI          – Parcours de la scène XAML et layout de celle ci          – Généra...
Optimisations XAML     • Limiter la profondeur de scène en ne créant pas de contrôles       superflus     • Limiter loverd...
DémoTip 6 { Optimisations XAML }
Tip 7        VIRTUALISER LUICode / Développement
Virtualisation de l’UI     •    Ne créer que les contrôles visibles à lécran     •    Les réutiliser au maximum           ...
Virtualisation de l’UI     •   Inutile de charger ce qui nest pas visible à lécran     •   Recycler les contrôles conteneu...
DémoTip 7 { Virtualisation de lUI }
Tip 8        LA MISE EN CACHE DES PAGESCode / Développement
Gérez le cache des pages     • Inutile de recharger les pages déjà chargées     • 1 ligne de code !                public ...
DémoTip 8 { NavigationCacheMode }
Tip 9        VS 2012 PERFORMANCE ANALYZERCode / Développement
VS 2012 Performance AnalyzerCode / Développement
DémoTip 9 { Visual Studio 2012 Performance Analyzer }
Tip 10        WINDOWS PERFORMANCE ANALYZERCode / Développement
Windows Performance Analyzer      • Permet de tracer tout ce qui se passe : Drivers,        lancement dapplications, charg...
DémoTip 10 { Windows Performance Analyzer }
Tip 11        AVANADE & MICROSOFT SUPPORTCode / Développement
Avanade•   Joint Venture d’Accenture et Microsoft, la mission d’Avanade consiste à aider les entreprises à    optimiser le...
Avanade Sessions animées par                         Retrouvez-nous sur      nos experts                                  ...
Poursuivons la conversation                  Support Premier à votre écoute!                                              ...
4 ouvrages écrits par 13 Microsoftees     http://www.editions-eyrolles.com/livres/Windows-8-pour-les-professionnels/Code /...
Q&ACode / Développement
Ressources      •   Analyse des performances: http://msdn.microsoft.com/en-us/library/ms182372.aspx      •   ISupportIncre...
Développeurs                                                         Pros de l’IT http://aka.ms/generation-app       Forme...
Prochain SlideShare
Chargement dans... 5
×

10 tips pour améliorer les performances de vos applications Windows 8

249

Published on

S’il est très simple de réaliser des applications Windows 8 de qualité, il est moins évident de créer des applications ultra performantes. Windows tourne désormais sur tout type d’appareils, des PC de gamers aux tablettes peu puissantes. Pour ces dernières, il est nécessaire de tirer parti au maximum des API fournies par WinRT. Cette session vous propose de découvrir 10 astuces afin d’améliorer visiblement les performances de vos applications.

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
249
Sur Slideshare
0
À partir des ajouts
0
Nombre d'ajouts
0
Actions
Partages
0
Téléchargements
6
Commentaires
0
J'aime
0
Ajouts 0
No embeds

No notes for slide
  • Notation
  • Intro code / dev
  • Intro code / dev
  • Suspended :utilisateurquittel’applicationWindows entre en mode economied’energieNotRunning :- http://msdn.microsoft.com/en-gb/library/windows/apps/hh694083.aspx3.8 Your app must meet the basic performance criteria on a low-power computer •The app must launch in 5 seconds or less •The app must suspend in 2 seconds or less
  • Async/Await a été introduit avec la version 5.0 du .Net Framework (C# et VBS).L’asynchronisme est généré par le compilateur à partir du keyword await. A partir de la fonction écrite le compilateur génère une machine d’état qui se base sur des interfaces afin d’avoir une exécution asynchrone de la méthode.
  • Bien que le mot clé await permette de débloquer la UI il ne permet pas d’exécuter les taches en parallèle. Si jamais on a plusieurs petites taches indépendantes qu’on peut exécuter en parallèle il faut se passer du mot clé await et l’utiliser seulement sur les résultats des taches.La démonstration suivante permet de bien illustrer cela.
  • Dans l’architecture du moteur XAML on peut séparer deux threads importants.Le thread UI: C’est le thread en charge du rendu et des intéractions utilisateurs. Il va prendre les différents éléments affichables (chaines de caractères, bitmap, …) et préparer leur rendu dans des buffers mémoires mais il va également recevoir les entrées utilisateurs (clics de souris, appuis clavier, appuis sur l’écran tactil).Le thread Compositor: C’est le thread qui va utiliser les buffers mémoires et les agencer à l’écran en fonction des scènes qu’on a défini. Il est également en charge des animations. C’est lui qui se charge de discuter avec le GPU ou le CPU (en fonction de la configuration hardware) pour l’affichage à l’écran.Si on veutune UI reactive et performante, ilfautlaisser le thread UI le plus libre possible pour recevoir les interactions utilisateur et déportél’affichagesur le thread Compositor.
  • Utilisation intensive du elles utilisent le thread UI de façon intensive car elle l’oblige à faire du rendu en permanence (changement de taille de police, changement de largeur, hauteur).
  • Dans l’architecture du moteur XAML on peut séparer deux threads importants.Le thread UI: C’est le thread en charge du rendu et des intéractions utilisateurs. Il va prendre les différents éléments affichables (chaines de caractères, bitmap, …) et préparer leur rendu dans des buffers mémoires mais il va également recevoir les entrées utilisateurs (clics de souris, appuis clavier, appuis sur l’écran tactil).Le thread Compositor: C’est le thread qui va utiliser les buffers mémoires et les agencer à l’écran en fonction des scènes qu’on a défini. Il est également en charge des animations. C’est lui qui se charge de discuter avec le GPU ou le CPU (en fonction de la configuration hardware) pour l’affichage à l’écran.Si on veutune UI reactive et performante, ilfautlaisser le thread UI le plus libre possible pour recevoir les interactions utilisateur et déportél’affichagesur le thread Compositor.RemarksThe format for the frame-rate counter displayed in the window chrome is: 000 000 000000 000 000 000 Cp fps UI fps Memory Batch Cpms UI ms  Cp fps: the frames-per-second frame rate for the composition thread UI fps: the frames-per-second frame rate for the UI thread Memory: memory utilization for textures Batch: the count of surfaces that are sent to the graphics processing unit (GPU) Cpcpu: time in milliseconds spent on the composition thread's processor UI cpu: time in milliseconds spent on the UI thread's processor
  • Async/Await a été introduit avec la version 5.0 du .Net Framework (C# et VBS).L’asynchronisme est généré par le compilateur à partir du keyword await. A partir de la fonction écrite le compilateur génère une machine d’état qui se base sur des interfaces afin d’avoir une exécution asynchrone de la méthode.
  • Recycler avec VirtualizationMode.Recycling
  • http://www.editions-eyrolles.com/livres/Windows-8-pour-les-professionnels/
  • 10 tips pour améliorer les performances de vos applications Windows 8

    1. 1. 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
    2. 2. 10 tips pour améliorer les performances de vos applications Windows 8 Nicolas Antoine Loïc Rebours Sr Support Engineer Sr Analyst .NET / MVP Microsoft Avanade @loicrebours www.blog.loicrebours.frCode / Développement
    3. 3. 10 tips pour améliorer les performances de vos applications Windows 8 Nicolas Antoine Christophe Bigot Sr Support Engineer Karim Luccin- Blog Microsoft Sr Analysts .NET AvanadeCode / Développement
    4. 4. Pourquoi une App performante ? EXPÉRIENCE UTILISATEURCode / Développement
    5. 5. Pourquoi une App performante ? • Expérience utilisateur – Les fonctionnalités ne font pas tout – Pas de perception des rouages de l’App – App performante = meilleures reviews • Windows Application Certification Kit – Pas de bras performances, pas de StoreCode / Développement
    6. 6. Tip 1 C++ LES BASESCode / Développement
    7. 7. Tip 1 (Bis) AMÉLIORER SUSPEND / RESUMECode / Développement
    8. 8. Cycle de vie de votre App • Etat d’exécution de l’App Activated Suspending Running NotRunning Suspended ResumingCode / Développement
    9. 9. La bonne sauvegarde au bon moment • App Data – Persiste entre plusieurs sessions – Sauvegarde incrémentale – Windows.Storage.ApplicationData – RoamingSettings • Session Data – Locale à la session courante – Supprimée au Alt + F4, reboot ou log off – Gérée par Windows si votre App ne se termine pasCode / Développement
    10. 10. DémoTip 1 { Sauvegarde et restauration }
    11. 11. Tip 2 ASYNC / AWAITCode / Développement
    12. 12. async / await sous le capot • Introduit avec .Net 4.5 (C# 5 et VB 5) • Asynchronisme généré par le compilateur • Illustration avec la méthode suivante : static async void DoRequestAsync() { byte[] buffer = new byte[100]; var request = HttpWebRequest.Create( "http://www.bing.fr" ); var response = await request.GetResponseAsync(); var byteRead = await response.GetResponseStream().ReadAsync( buffer, 0, 100 ); if( byteRead == 100 ) { Console.WriteLine( "Success" ); } }Code / Développement
    13. 13. DémoTip 2 { async / await sous le capot }
    14. 14. Exécution asynchrone, mais pas parallèle Async work Await AwaitAsync method UI thread Async work AwaitAsync method UI threadCode / Développement
    15. 15. DémoTip 2 { Asynchronisme et parallélisme }
    16. 16. Tip 3 « HELLO, I SUPPORT INCREMENTAL LOADING »Code / Développement
    17. 17. Chargement incrémental des données • Inutile de charger des milliers d’éléments • Il faut charger les données lorsque l’utilisateur en a besoin • Interface ISupportIncrementalLoading public interface ISupportIncrementalLoading { bool HasMoreItems { get; } IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count); }Code / Développement
    18. 18. DémoTip 3 { ISupportIncrementalLoading }
    19. 19. Tip 4 CACHER LESCode / Développement
    20. 20. Tip 4 CACHER LES RESSOURCESCode / Développement
    21. 21. Tip 4 MISE EN CACHE DES RESSOURCESCode / Développement
    22. 22. Les ressources • Ne chargez vos ressoures que si besoin • Ressources ré-utilisées = ressources en cache • Minimisez l’utilisation des ressources distantesCode / Développement
    23. 23. Tip 5 OPTIMISER LES ANIMATIONSCode / Développement
    24. 24. Un peu de théorie… • Pour le rendu XAML Il y a 2 threads importants : – Le thread UI – Le thread Compositor • Le thread UI est en charge du : – Parsing du XAML et layout de la scène – Rendering des éléments • Le thread Compositor est en charge du : – Rendu des scènes (instructions GPU / CPU) – Rendu des animationsCode / Développement
    25. 25. 2 types d’animations • Animations dépendantes : – Utilisation intensive du thread UI – Exemples : changement de taille de police, changement de largeur, hauteur… • Animations indépendantes : – Les plus performantes – Gérées par le thread Compositor – Exemples : scaling, rotation, translation…Code / Développement
    26. 26. Un peu de DebugSettings • Propriété EnableFrameRateCounter • Affiche les compteurs de performance Thread Compositor Thread UICode / Développement
    27. 27. DémoTip 5 { Animation dépendantes vs. indépendantes }
    28. 28. Tip 6 OPTIMISATIONS XAMLCode / Développement
    29. 29. Quest-ce qui prend du temps ? • Thread UI – Parcours de la scène XAML et layout de celle ci – Génération des ordres de rendu • Thread Compositor – Exécution des ordres de rendu • Carte graphique – Rastérization et blending des pixelsCode / Développement
    30. 30. Optimisations XAML • Limiter la profondeur de scène en ne créant pas de contrôles superflus • Limiter loverdraw en utilisant correctement les templates • Utiliser DebugSettings.IsOverdrawHeatMapEnabledCode / Développement
    31. 31. DémoTip 6 { Optimisations XAML }
    32. 32. Tip 7 VIRTUALISER LUICode / Développement
    33. 33. Virtualisation de l’UI • Ne créer que les contrôles visibles à lécran • Les réutiliser au maximum Item 0 Item 2 Item 4 Item 6 Item 8 Item 1 Item 3 Item 5 Item 7 Item 9Code / Développement
    34. 34. Virtualisation de l’UI • Inutile de charger ce qui nest pas visible à lécran • Recycler les contrôles conteneurs • Fonctionne avec ListView, GridView, ... • Ne fonctionne PAS avec les contrôles qui ne limitent pas la taille: – ScrollViewer – Canvas – VariableSizedWrapGrid – ...Code / Développement
    35. 35. DémoTip 7 { Virtualisation de lUI }
    36. 36. Tip 8 LA MISE EN CACHE DES PAGESCode / Développement
    37. 37. Gérez le cache des pages • Inutile de recharger les pages déjà chargées • 1 ligne de code ! public MyPage() { this.InitializeComponent(); this.NavigationCacheMode = NavigationCacheMode.Enabled; } Rechargez ce qui doit l’être. (Flux RSS)Code / Développement
    38. 38. DémoTip 8 { NavigationCacheMode }
    39. 39. Tip 9 VS 2012 PERFORMANCE ANALYZERCode / Développement
    40. 40. VS 2012 Performance AnalyzerCode / Développement
    41. 41. DémoTip 9 { Visual Studio 2012 Performance Analyzer }
    42. 42. Tip 10 WINDOWS PERFORMANCE ANALYZERCode / Développement
    43. 43. Windows Performance Analyzer • Permet de tracer tout ce qui se passe : Drivers, lancement dapplications, chargement de ressources, ... • Adapté à tout type dapplications (dont les App Windows Store) • Offre un moyen danalyser toutes les facettes des performances dune application (5 s pour démarrer !)Code / Développement
    44. 44. DémoTip 10 { Windows Performance Analyzer }
    45. 45. Tip 11 AVANADE & MICROSOFT SUPPORTCode / Développement
    46. 46. Avanade• Joint Venture d’Accenture et Microsoft, la mission d’Avanade consiste à aider les entreprises à optimiser leurs investissements informatiques et à développer des solutions complètes, génératrices de bénéfices concrets, autour des technologies Microsoft.• Avanade compte aujourd’hui plus de 17.000 professionnels dans plus de 20 pays. Le chiffre d’affaires 2012 est de 1,3 milliard $US• Une expertise unique fondée sur un investissement permanent en partenariat avec Microsoft : Avanade est notamment n 1 en nombre de certifications par employé (MCPD, MCTS, MCITP), dispose de 29 Microsoft Most Valued Professionals et 14 elite Microsoft Certified Architects.• Un lien privilégié avec Microsoft reconnu par «Microsoft’s Global SI Partner of the Year award” reçu en 2012, 2011, 2010, 2009, 2008, 2006, 2004 et 2001.• Avanade est une société orientée «Assets» participant à l’évolution des solutions Microsoft.• Notre base de connaissances globale consolide l’expérience acquise sur les différents projets.• Avanade France a obtenu en 2012 le label « Top Employeur » 2012 Copyright Avanade - Reproduction interdite.
    47. 47. Avanade Sessions animées par Retrouvez-nous sur nos experts le Stand 11 30 Copyright Avanade - Reproduction interdite.
    48. 48. Poursuivons la conversation Support Premier à votre écoute! Nom du speaker Fonction du speaker Société du speakerStands F-G-H au Village Microsoft
    49. 49. 4 ouvrages écrits par 13 Microsoftees http://www.editions-eyrolles.com/livres/Windows-8-pour-les-professionnels/Code / Développement
    50. 50. Q&ACode / Développement
    51. 51. Ressources • Analyse des performances: http://msdn.microsoft.com/en-us/library/ms182372.aspx • ISupportIncrementalLoading : http://blogs.msdn.com/b/devosaure/archive/2012/10/15/isupportincrementalloading-loading-a-subsets-of- data.aspx • Performance tips for Windows Storeapps using XAML : http://channel9.msdn.com/Events/Build/2012/4-103 • Virtualisation de lUI : http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh780657.aspx • 10 tips pour développeur : http://blog.loicrebours.fr/2012/09/22/10-tips-pour-developpeur-windows-8/Code / Développement
    52. 52. 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. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×