Upload
microsoft
View
215
Download
1
Embed Size (px)
DESCRIPTION
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.
Citation preview
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