400 likes | 486 Views
Performance et Optimisation des Applications Windows Phone 7. Mardi 8 Février 2011 Luc Vo Van Consultant .NET/UX Microsoft France. Simon Ferquel Consultant Access IT IdF. Microsoft Services: Un accompagnement global de nos clients. Architecture & Planning Planification.
E N D
Performance et Optimisation des Applications Windows Phone 7 Mardi 8 Février 2011 Luc Vo VanConsultant .NET/UXMicrosoft France Simon Ferquel ConsultantAccess IT IdF
Microsoft Services:Un accompagnement global de nos clients Architecture & Planning Planification Conseil et Projets Déploiement et adoption Support Optimisation et Opération Support Premier Consulting Services Enterprise Strategy • Division Services France 2010 • 180 Consultants • 125 TechnicalAccount Managers • 190 Ingénieurs Support • 17 Responsables de Mission • 41 Partenaires référencés • Division Services Monde 2010 • 82 pays couverts • 18 000 employés • 35 000 partenaires • 44 langues parlées par nos ingénieurs Evaluation Développement Stabilisation Support Planification Opérations Déploiement www.microsoft.fr/services
Notre positionnement est d’intervenir sur les projets critiques et les technologies récentes Criticité du projet • Notre engagement auprès de nos partenaires est : • De leur assurer un transfert d’expertise, • De leur apporter notre support sur les dernières technologies, • De leur donner accès aux meilleures pratiques de mise en œuvre et de support. Partenaires Maturité de la technologie • Nos clients et partenaires sont particulièrement satisfaits par… • Le niveau d’engagement des consultants : 94% • La gestion de l’équipe de projet : 92% • Les compétences techniques des consultants : 91% • La relation avec les équipes du client : 90%
Access It IdFen quelques mots… • Société de services, conseil / expertise,et formation,exclusivement sur les technologies Microsoft • 20+ collaborateurs spécialisés sur les techno MS, dont 11 MVP • Interventions en mode : • Conseil, expertise, coaching et formation • Réalisation, au forfait ou en Assistance Technique .NET Plateforme Applicative Framework et langages .Net, AZURE, Silverlight, WPF/Surface, VS/TFS, Windows Phone 7,… SQL Server (SSIS, SQL, SSAS, SSRS), PowerPivot, SharePoint & on-line, Office 365,… .NET Collab. BI
Agenda • Hardware • Silverlight sur Windows Phone 7 • Outils et compteurs • Spécificités de la CLR Windows Phone 7 • Optimisations d’applications Silverlight
Hardware • Processeur 1GHz Snapdragon • Instructions ARM • Résolution 480x800 • GPU intégré
Silverlight Threading • 1 Thread UI • 1 Thread de composition • Plusieurs threads de travail (worker) • Threads « utilisateurs » • Threads de décodage de médias
Silverlight Threading Thread UI Thread Composition • Entrées (touch) • Layout • Measure et Arrange • Code utilisateur • Callbacks “par frame” • Gestionairesd’évènements • Converters… • Animations non prises en charge par le GPU • Animations de propriétés de type double • RenderTransforms • Opacity • Perspective Transforms • Clips rectangulaires
Silverlight Threading • Composition et affichage Thread UI Thread de composition • Animations simples
Démo Thread UI vs. Thread de composition
Emulateur • Utilise le GPU du PC (DirectX 10 requis) • Le CPU / GPU estsouvent beaucoup plus puissant • Utilise un seulcoeur
Démo Différences entre émulateur et appareil
Compteur de Performance Application.Current.Host.Settings.EnableFrameRateCounter = true; Thread de composition (fps) Thread UI (fps) Textures (kb) # de surfaces # de “IRT” Fill Rate
FillRate • Nombre de pixels inclusdans la totalité des textures passées au GPU • BitmapCacheaugmente le Fill Rate • En 800x480, fill rate == 1.0 • Impact sur les performances lorsque le fill rate est trop important ( > 3 ) • Fill rate < 2 jusqu’a 60 fps • Fill rate > 4.5 jusqu’a 30 fps • Fill rate > 6.5 jusqu’a 20 fps
RedrawRegions Application.Current.Host.Settings.EnableRedrawRegions = true; Change la couleur des visuels à chaquefoisqu’ilssontredessinés(CPU / Thread UI)
Cache Visualizations Application.Current.Host.Settings.EnableCacheVisualization = true; • Permet de voir le nombre de textures utilisées pour le rendud’une zone de l’écran
Démo Utilisation des outils et résolution des problèmes
La CLR de Windows Phone 7 • Basée sur celle du CF 3.5, estampillée 3.7 • Dédiée aux appareils légers • Séparation de la couche UI : XNA et Silverlight • Même gestion de la mémoire et du JIT • Assemblies réutilisables entre XNA et Silverlight
Garbage Collection • Déclenché tous les 1 Mo alloué (non modifiable) • En moyenne sur les appareils disponibles aujourd’hui, 1 Mo collecté = 10 ms. Dépend de la complexité du graphe • Non générationnel, bloque le thread UI en Silverlight
Garbage Collection Stack byte[10000]
Garbage Collection • Déclenché tous les 1 Mo alloué • En moyenne sur les appareils disponibles aujourd’hui, 1 Mo collecté = 10 ms. Dépend de la complexité du graphe. • Non générationnel, bloque le thread UI en Silverlight • LINQ, voire le foreach, peuvent être gourmand, ne pas utiliser lors des manipulations à haute réactivité! • Forcer = null sur les grosses structures peut hinter le GC
GC : XNA et Silverlight • XNA basé sur un gameloop • Minimiser l’allocation dans Updateet Draw, chacun est appelé 30 fois par seconde • Attention à LINQ et aux foreach • Bon exercice pour les développeurs Silverlight ! • Silverlight basé sur de l’évènementiel • Moins sensible au pauses liées au GC • Profiter des interactions utilisateurs pour collecter • Le feedback subtil améliore la performance perçue
Démo Mémoire et garbage collection
Just-in-Time compilation (JIT) • Optimisé pour s’exécuter rapidement, plutôt que générer du code rapide • JIT Sharing • Les assemblies partagées ne sont jittées qu’une fois. Le code natif résultant peut être réutilisé directement
PerformanceProgressBar • La ProgressBar en indeterminate par défaut est animée entièrement dans le thread UI • PerformanceProgressBar déporte l’animation sur le thread de composition • Animation de chargement plus fluide (UX : important!) • Peu ou pas de ralentissement sur les manipulations • http://www.jeff.wilcox.name/2010/08/performanceprogressbar/
LowProfileImageLoader • Déporte le chargement et le décodage des images vers un worker thread • Accessoirement, les JPEG sont décodés en hardware, mais les PNG en software. Exemples de candidats pour JPEG : fonds de Panorama, images dans ListBoxes… • http://blogs.msdn.com/b/delay/archive/2010/09/02/keep-a-low-profile-lowprofileimageloader-helps-the-windows-phone-7-ui-thread-stay-responsive-by-loading-images-in-the-background.aspx
Panorama et Pivot • Panorama charge l’intégralité de sesPanoramaItems • Pivot ne charge quel’élément en cours et le prochain • Repousser le chargement des données ‘IsLoading’
Tombstoning • Evitez ApplicationSettings pour le contenu complexe (qui sérialise en XML) • BinarySerializerest la méthode de sérialisation la plus performante.
Démo Utilisation des contrôles optimisés
En synthèse • Identifier les problèmes potentiels en amont • Framerate, consommation mémoire, temps de chargement… • Surveiller à chaque changement dans l’arbre visuel • Framerate, Fill Rate, Dirtyregions…
En synthèse • Tester sur un appareil, TRES SOUVENT • Incorporer les éléments de design le plus tôt possible • Utiliser les contrôles et comportements optimisés
Des questions ? • Blog de Simon Ferquel http://www.simonferquel.net/blog/ Readiculous! • Blog de Luc Vo Van http://blogs.msdn.com/luc apShapeChase
MSDN et TechNet: l’essentiel des ressources techniques à portée de clic • Portail administration et infrastructure pour informaticiens • Portail de ressources technique pour développeurs http://technet.com http://msdn.com