SlideShare une entreprise Scribd logo
1  sur  52
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
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.fr


Code / Développement
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
                          Avanade



Code / Développement
Pourquoi une App performante ?



              EXPÉRIENCE
              UTILISATEUR
Code / Développement
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 Store

Code / Développement
Tip 1

        C++ LES BASES

Code / Développement
Tip 1 (Bis)

        AMÉLIORER SUSPEND / RESUME

Code / Développement
Cycle de vie de votre App
     • Etat d’exécution de l’App

                Activated               Suspending
                            Running




               NotRunning              Suspended
                            Resuming



Code / Développement
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 pas
Code / Développement
Démo
Tip 1 { Sauvegarde et restauration }
Tip 2

        ASYNC / AWAIT

Code / Développement
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
Démo
Tip 2 { async / await sous le capot }
Exécution asynchrone, mais pas parallèle
  Async work
                        Await      Await
Async method
   UI thread




  Async work
                          Await
Async method
   UI thread


Code / Développement
Démo
Tip 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 lorsque l’utilisateur en a besoin
     • Interface ISupportIncrementalLoading

              public interface ISupportIncrementalLoading
              {
                  bool HasMoreItems { get; }

                  IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count);
              }




Code / Développement
Démo
Tip 3 { ISupportIncrementalLoading }
Tip 4

        CACHER LES

Code / Développement
Tip 4

        CACHER LES RESSOURCES

Code / Développement
Tip 4

        MISE EN CACHE DES RESSOURCES

Code / Développement
Les ressources


     • Ne chargez vos ressoures que si besoin
     • Ressources ré-utilisées = ressources en cache
     • Minimisez l’utilisation des ressources distantes


Code / Développement
Tip 5

        OPTIMISER LES ANIMATIONS

Code / Développement
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 animations
Code / Développement
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
Un peu de DebugSettings
     • Propriété EnableFrameRateCounter
     • Affiche les compteurs de performance




         Thread Compositor Thread UI


Code / Développement
Démo
Tip 5 { Animation dépendantes vs. indépendantes }
Tip 6

        OPTIMISATIONS XAML

Code / Développement
Qu'est-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 pixels


Code / Développement
Optimisations XAML

     • Limiter la profondeur de scène en ne créant pas de contrôles
       superflus
     • Limiter l'overdraw en utilisant correctement les templates
     • Utiliser DebugSettings.IsOverdrawHeatMapEnabled




Code / Développement
Démo
Tip 6 { Optimisations XAML }
Tip 7

        VIRTUALISER L'UI

Code / Développement
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 9




Code / Développement
Virtualisation de l’UI
     •   Inutile de charger ce qui n'est 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
Démo
Tip 7 { Virtualisation de l'UI }
Tip 8

        LA MISE EN CACHE DES PAGES

Code / Développement
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
Démo
Tip 8 { NavigationCacheMode }
Tip 9

        VS 2012 PERFORMANCE ANALYZER

Code / Développement
VS 2012 Performance Analyzer




Code / Développement
Démo
Tip 9 { Visual Studio 2012 Performance Analyzer }
Tip 10

        WINDOWS PERFORMANCE ANALYZER

Code / Développement
Windows Performance Analyzer

      • Permet de tracer tout ce qui se passe : Drivers,
        lancement d'applications, chargement de ressources, ...
      • Adapté à tout type d'applications (dont les App Windows
        Store)
      • Offre un moyen d'analyser toutes les facettes des
        performances d'une application (5 s pour démarrer !)

Code / Développement
Démo
Tip 10 { Windows Performance Analyzer }
Tip 11

        AVANADE & MICROSOFT SUPPORT

Code / Développement
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.
Avanade


 Sessions animées par                         Retrouvez-nous sur
      nos experts                                  le Stand

        11                                                      30

                  Copyright Avanade - Reproduction interdite.
Poursuivons la conversation
                  Support Premier à votre écoute!

                                              Nom du speaker
                                           Fonction du speaker
                                            Société du speaker




Stands F-G-H au Village Microsoft
4 ouvrages écrits par 13 Microsoftees




     http://www.editions-eyrolles.com/livres/Windows-8-pour-les-professionnels/
Code / Développement
Q&A
Code / Développement
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 l'UI : 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
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

Contenu connexe

Tendances

Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
L'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
L'envers du décor : le Modern-ALM dans - et par - les équipes produits MicrosoftL'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
L'envers du décor : le Modern-ALM dans - et par - les équipes produits MicrosoftMicrosoft
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeadsRNS
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Du développement à la livraison avec JavaFX et le JDK9
Du développement à la livraison avec JavaFX et le JDK9Du développement à la livraison avec JavaFX et le JDK9
Du développement à la livraison avec JavaFX et le JDK9Thierry Wasylczenko
 
Java & Etat de l'art
Java & Etat de l'artJava & Etat de l'art
Java & Etat de l'artInes Ouaz
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tousAurelien Navarre
 
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...Microsoft
 
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesIppon
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open SourceIppon
 

Tendances (20)

Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
Java Fx Rapport
Java Fx RapportJava Fx Rapport
Java Fx Rapport
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
L'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
L'envers du décor : le Modern-ALM dans - et par - les équipes produits MicrosoftL'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
L'envers du décor : le Modern-ALM dans - et par - les équipes produits Microsoft
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & Android
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Du développement à la livraison avec JavaFX et le JDK9
Du développement à la livraison avec JavaFX et le JDK9Du développement à la livraison avec JavaFX et le JDK9
Du développement à la livraison avec JavaFX et le JDK9
 
Java & Etat de l'art
Java & Etat de l'artJava & Etat de l'art
Java & Etat de l'art
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
 
Introduction àJava
Introduction àJavaIntroduction àJava
Introduction àJava
 
Java Fx
Java FxJava Fx
Java Fx
 
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à Achilles
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 

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

App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...Guillaume Brout
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
Développer une Single Page Application HTML 5 pour tous les devices
Développer une Single Page Application HTML 5 pour tous les devices Développer une Single Page Application HTML 5 pour tous les devices
Développer une Single Page Application HTML 5 pour tous les devices Microsoft
 
Actionscript: du web au mobile
Actionscript: du web au mobileActionscript: du web au mobile
Actionscript: du web au mobileMartin Arvisais
 
"Introduction aux Developements iOS" in Three hours
"Introduction aux Developements iOS" in Three hours"Introduction aux Developements iOS" in Three hours
"Introduction aux Developements iOS" in Three hoursLaurent MEURISSE
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Introduction au développement Windows 8.1
Introduction au développement Windows 8.1Introduction au développement Windows 8.1
Introduction au développement Windows 8.1Microsoft
 
[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec XamarinCellenza
 
Introduction au développement windows 8 modern ui avec html5 et javascript
Introduction au développement windows 8 modern ui avec html5 et javascriptIntroduction au développement windows 8 modern ui avec html5 et javascript
Introduction au développement windows 8 modern ui avec html5 et javascriptdavrous
 
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScriptIntroduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScriptMicrosoft
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Conférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierConférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierDamien Laureaux
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketmichael_bailly
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5davrous
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Hadina RIMTIC
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 

Similaire à 10 tips pour améliorer les performances de vos applications Windows 8 (20)

App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
App211 techdays 2013 Windows 8 concevoir des applications efficaces et perfor...
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Formation mobile-cross-platform
Formation mobile-cross-platformFormation mobile-cross-platform
Formation mobile-cross-platform
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Développer une Single Page Application HTML 5 pour tous les devices
Développer une Single Page Application HTML 5 pour tous les devices Développer une Single Page Application HTML 5 pour tous les devices
Développer une Single Page Application HTML 5 pour tous les devices
 
Actionscript: du web au mobile
Actionscript: du web au mobileActionscript: du web au mobile
Actionscript: du web au mobile
 
"Introduction aux Developements iOS" in Three hours
"Introduction aux Developements iOS" in Three hours"Introduction aux Developements iOS" in Three hours
"Introduction aux Developements iOS" in Three hours
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Introduction au développement Windows 8.1
Introduction au développement Windows 8.1Introduction au développement Windows 8.1
Introduction au développement Windows 8.1
 
[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin
 
Introduction au développement windows 8 modern ui avec html5 et javascript
Introduction au développement windows 8 modern ui avec html5 et javascriptIntroduction au développement windows 8 modern ui avec html5 et javascript
Introduction au développement windows 8 modern ui avec html5 et javascript
 
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScriptIntroduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
Introduction au développement Windows 8 ModernUI avec HTML5 et JavaScript
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Conférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierConférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG Montpellier
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to market
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
Native script
Native scriptNative script
Native script
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 

Plus de Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

Plus de Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

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

  • 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 TechDays http://notes.mstechdays.fr
  • 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.fr Code / Développement
  • 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 Avanade Code / Développement
  • 4. Pourquoi une App performante ? EXPÉRIENCE UTILISATEUR Code / Développement
  • 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 Store Code / Développement
  • 6. Tip 1 C++ LES BASES Code / Développement
  • 7. Tip 1 (Bis) AMÉLIORER SUSPEND / RESUME Code / Développement
  • 8. Cycle de vie de votre App • Etat d’exécution de l’App Activated Suspending Running NotRunning Suspended Resuming Code / Développement
  • 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 pas Code / Développement
  • 10. Démo Tip 1 { Sauvegarde et restauration }
  • 11. Tip 2 ASYNC / AWAIT Code / Développement
  • 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. Démo Tip 2 { async / await sous le capot }
  • 14. Exécution asynchrone, mais pas parallèle Async work Await Await Async method UI thread Async work Await Async method UI thread Code / Développement
  • 15. Démo Tip 2 { Asynchronisme et parallélisme }
  • 16. Tip 3 « HELLO, I SUPPORT INCREMENTAL LOADING » Code / Développement
  • 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. Démo Tip 3 { ISupportIncrementalLoading }
  • 19. Tip 4 CACHER LES Code / Développement
  • 20. Tip 4 CACHER LES RESSOURCES Code / Développement
  • 21. Tip 4 MISE EN CACHE DES RESSOURCES Code / Développement
  • 22. Les ressources • Ne chargez vos ressoures que si besoin • Ressources ré-utilisées = ressources en cache • Minimisez l’utilisation des ressources distantes Code / Développement
  • 23. Tip 5 OPTIMISER LES ANIMATIONS Code / Développement
  • 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 animations Code / Développement
  • 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. Un peu de DebugSettings • Propriété EnableFrameRateCounter • Affiche les compteurs de performance Thread Compositor Thread UI Code / Développement
  • 27. Démo Tip 5 { Animation dépendantes vs. indépendantes }
  • 28. Tip 6 OPTIMISATIONS XAML Code / Développement
  • 29. Qu'est-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 pixels Code / Développement
  • 30. Optimisations XAML • Limiter la profondeur de scène en ne créant pas de contrôles superflus • Limiter l'overdraw en utilisant correctement les templates • Utiliser DebugSettings.IsOverdrawHeatMapEnabled Code / Développement
  • 31. Démo Tip 6 { Optimisations XAML }
  • 32. Tip 7 VIRTUALISER L'UI Code / Développement
  • 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 9 Code / Développement
  • 34. Virtualisation de l’UI • Inutile de charger ce qui n'est 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. Démo Tip 7 { Virtualisation de l'UI }
  • 36. Tip 8 LA MISE EN CACHE DES PAGES Code / Développement
  • 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. Démo Tip 8 { NavigationCacheMode }
  • 39. Tip 9 VS 2012 PERFORMANCE ANALYZER Code / Développement
  • 40. VS 2012 Performance Analyzer Code / Développement
  • 41. Démo Tip 9 { Visual Studio 2012 Performance Analyzer }
  • 42. Tip 10 WINDOWS PERFORMANCE ANALYZER Code / Développement
  • 43. Windows Performance Analyzer • Permet de tracer tout ce qui se passe : Drivers, lancement d'applications, chargement de ressources, ... • Adapté à tout type d'applications (dont les App Windows Store) • Offre un moyen d'analyser toutes les facettes des performances d'une application (5 s pour démarrer !) Code / Développement
  • 44. Démo Tip 10 { Windows Performance Analyzer }
  • 45. Tip 11 AVANADE & MICROSOFT SUPPORT Code / Développement
  • 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. Avanade Sessions animées par Retrouvez-nous sur nos experts le Stand 11 30 Copyright Avanade - Reproduction interdite.
  • 48. Poursuivons la conversation Support Premier à votre écoute! Nom du speaker Fonction du speaker Société du speaker Stands F-G-H au Village Microsoft
  • 49. 4 ouvrages écrits par 13 Microsoftees http://www.editions-eyrolles.com/livres/Windows-8-pour-les-professionnels/ Code / Développement
  • 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 l'UI : 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. 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

Notes de l'éditeur

  1. Notation
  2. Intro code / dev
  3. Intro code / dev
  4. 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
  5. 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.
  6. 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.
  7. 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.
  8. 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).
  9. 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&apos;s processor UI cpu: time in milliseconds spent on the UI thread&apos;s processor
  10. 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.
  11. Recycler avec VirtualizationMode.Recycling
  12. http://www.editions-eyrolles.com/livres/Windows-8-pour-les-professionnels/