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

Preview:

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 / MVPAvanade@loicrebourswww.blog.loicrebours.fr

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

Recommended