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 AntoineSr Support EngineerMicrosoft
Code / Développement
Loïc ReboursSr Analyst .NET / [email protected]
Christophe BigotKarim Luccin- BlogSr Analysts .NETAvanade
10 tips pour améliorer les performances de vos applications Windows 8
Nicolas AntoineSr Support EngineerMicrosoft
Code / Développement
Code / Développement
EXPÉRIENCE UTILISATEUR
Pourquoi une App performante ?
Code / Développement
• 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
Pourquoi une App performante ?
C++ LES BASESTip 1
Code / Développement
AMÉLIORER SUSPEND / RESUMETip 1 (Bis)
Code / Développement
Code / Développement
• Etat d’exécution de l’App
Cycle de vie de votre App
NotRunning
Running
Suspended
Activated Suspending
Resuming
Code / Développement
• 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
La bonne sauvegarde au bon moment
DémoTip 1 { Sauvegarde et restauration }
ASYNC / AWAITTip 2
Code / Développement
Code / Développement
• 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" ); } }
async / await sous le capot
DémoTip 2 { async / await sous le capot }
Code / Développement
Exécution asynchrone, mais pas parallèle
UI thread
Async methodAwait
Async workAwait
UI thread
Async methodAwait
Async work
DémoTip 2 { Asynchronisme et parallélisme }
« HELLO, I SUPPORT INCREMENTAL LOADING »
Tip 3
Code / Développement
Code / Développement
• Inutile de charger des milliers d’éléments• Il faut charger les données lorsque l’utilisateur en a
besoin• Interface ISupportIncrementalLoading
Chargement incrémental des données
public interface ISupportIncrementalLoading{ bool HasMoreItems { get; }
IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count);}
DémoTip 3 { ISupportIncrementalLoading }
CACHER LESTip 4
Code / Développement
CACHER LES RESSOURCESTip 4
Code / Développement
MISE EN CACHE DES RESSOURCESTip 4
Code / Développement
Code / Développement
• Ne chargez vos ressoures que si besoin
• Ressources ré-utilisées = ressources en cache
• Minimisez l’utilisation des ressources distantes
Les ressources
OPTIMISER LES ANIMATIONSTip 5
Code / Développement
Code / Développement
• 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
Un peu de théorie…
Code / Développement
• 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…
2 types d’animations
Code / Développement
• Propriété EnableFrameRateCounter• Affiche les compteurs de performance
Un peu de DebugSettings
Thread UIThread Compositor
DémoTip 5 { Animation dépendantes vs. indépendantes }
OPTIMISATIONS XAMLTip 6
Code / Développement
• 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
Qu'est-ce qui prend du temps ?
Code / Développement
• 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
Optimisations XAML
DémoTip 6 { Optimisations XAML }
VIRTUALISER L'UITip 7
Code / Développement
Code / Développement
• Ne créer que les contrôles visibles à l'écran• Les réutiliser au maximum
Virtualisation de l’UI
Item 0
Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8
Item 9
Code / Développement
• 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– ...
Virtualisation de l’UI
DémoTip 7 { Virtualisation de l'UI }
LA MISE EN CACHE DES PAGESTip 8
Code / Développement
Code / Développement
• Inutile de recharger les pages déjà chargées• 1 ligne de code !
Gérez le cache des pages
public MyPage(){ this.InitializeComponent(); this.NavigationCacheMode = NavigationCacheMode.Enabled;}
Rechargez ce qui doit l’être. (Flux RSS)
DémoTip 8 { NavigationCacheMode }
VS 2012 PERFORMANCE ANALYZERTip 9
Code / Développement
Code / Développement
VS 2012 Performance Analyzer
DémoTip 9 { Visual Studio 2012 Performance Analyzer }
WINDOWS PERFORMANCE ANALYZER
Tip 10
Code / Développement
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 !)
DémoTip 10 { Windows Performance Analyzer }
AVANADE & MICROSOFT SUPPORTTip 11
Code / Développement
• 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
Avanade
Copyright Avanade - Reproduction interdite.
Copyright Avanade - Reproduction interdite.
Avanade
Sessions animées par nos experts
11
Retrouvez-nous sur le Stand
30
Poursuivons la conversationSupport Premier à votre écoute!
Nom du speakerFonction du speakerSociété du speaker
Stands F-G-H au Village Microsoft
4 ouvrages écrits par 13 Microsoftees
Code / Développement
http://www.editions-eyrolles.com/livres/Windows-8-pour-les-professionnels/
Q & A
Code / Développement
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/
Formez-vous en ligne
Retrouvez nos évènements
Faites-vous accompagner gratuitement
Essayer gratuitement nos solutions IT
Retrouver nos experts Microsoft
Pros de l’ITDéveloppeurs
www.microsoftvirtualacademy.com
http://aka.ms/generation-app
http://aka.ms/evenements-developpeurs
http://aka.ms/itcamps-france
Les accélérateursWindows Azure, Windows Phone,
Windows 8
http://aka.ms/telechargements
La Dev’Team sur MSDNhttp://aka.ms/devteam
L’IT Team sur TechNethttp://aka.ms/itteam
Top Related