Booster votre application Windows Phone 8
Prochain SlideShare
Loading in...5
×

Vous aimez ? Partagez donc ce contenu avec votre réseau

Partager

Booster votre application Windows Phone 8

  • 767 vues
Uploaded on

A l'heure des interfaces naturelles, vos utilisateurs attendent de votre application qu'elle soit particulièrement réactive. Sur la base de retours d'expériences, nous verrons comment votre......

A l'heure des interfaces naturelles, vos utilisateurs attendent de votre application qu'elle soit particulièrement réactive. Sur la base de retours d'expériences, nous verrons comment votre application peut consommer moins de mémoire et solliciter moins le processeur, et répondre aux moindres sollicitations. De l'utilisation de l'analyseur de performances à l'implémentation de trucs et astuces, vous repartirez de cette session avec le plein d'idées pour améliorer les performances de votre application

  • Full Name Full Name Comment goes here.
    Êtes-vous sûr de vouloir
    Votre message apparaîtra ici
    Be the first to comment
    Be the first to like this
No Downloads

Vues

Total des vues
767
Sur Slideshare
767
From Embeds
0
Nombre d'ajouts
0

Actions

Partages
Téléchargements
7
Commentaires
0
J'aime
0

Ajouts 0

No embeds

Signaler un contenu

Signalé comme inapproprié Signaler comme inapproprié
Signaler comme inapproprié

Indiquez la raison pour laquelle vous avez signalé cette présentation comme n'étant pas appropriée.

Annuler
    No notes for slide
  • Intro Phone / Mobilité
  • Notation

Transcript

  • 1. Boostez votre application Windows Phone 8 Charlotte GAIDON, Jérémy ALLES Pôle expertise Microsoft Grenoble THALES APP103 www.2day-app.com bit.ly/perfwp7Boostez votre application WP8
  • 2. PrésentationCharlotte Gaidon Jérémy Alles Formatrice WPF / Silverlight MVP / WPF Disciples charlotte.gaidon@gmail.com jeremy.alles@live.com @nutchad @jalpf www.japf.fr Cœur de métier : applications industrielles Agence de 200 collaborateurs à Grenoble Pôle d’expertise sur les technologies Microsoft 13/02/2013 Boostez votre application WP8 2
  • 3. Agenda• Quoi de neuf WP8 ?• Sans les mains !• Avec un peu de bonne volonté !• Pour les plus courageux ! 13/02/2013 Boostez votre application WP8 3
  • 4. Quoi de neuf docteur ?CE QUI CHANGE AVEC WP8 13/02/2013 Boostez votre application WP8 4
  • 5. Flashback 13/02/2013 Boostez votre application WP8 5
  • 6. Nouveau noyau• Windows Phone 7 : noyau CE de Windows Mobile• Windows Phone 8 : noyau NT Windows 8 Recoupement entre les runtimes « Desktop » et « Phone » Shared API 13/02/2013 Boostez votre application WP8 6
  • 7. Et mes applis ? bit.ly/perfwp8-upgradeCompatibilité avec les 120 000 applis existantes ! Upgrade to WP8 WP7.x App WP8 App Quirks Mode Shim WP8 Runtime 13/02/2013 Boostez votre application WP8 7
  • 8. Nouveau hardware• dual-core 1024 Mo de RAM – devices puissants – encore d’intérêt à paralléliser • résolutions plus grandes• 2 formats possibles Application.Current.Host.Content.ScaleFactor 13/02/2013 Boostez votre application WP8 8
  • 9. NOUVEAUX OUTILS 13/02/2013 Boostez votre application WP8 9
  • 10. Nouvel émulateur• Différentes caractéristiques de device• Hyper-V (processeur SLAT requis)• Attention aux perfs dans l’émulateur WP7 13/02/2013 Boostez votre application WP8 10
  • 11. Profiling et MonitoringVS2012 apporte des nouveautés 13/02/2013 Boostez votre application WP8 11
  • 12. 13/02/2013 Boostez votre application WP8 12
  • 13. Rappel des bonnes pratiques• Limiter la taille de l’arbre visuel• Fuites mémoire : attention aux events !• Tirer parti du thread compositor – ScaleTransform vs animation FontSize bit.ly/perfwp7 – TranslateTransform vs animation Margin 13/02/2013 Boostez votre application WP8 13
  • 14. Economie d’énergie• Utiliser la compression GZip bit.ly/perfwp8-gzip• Regrouper les requêtes web• Thème foncé vs thème clair• JPEG plus économe que PNG 13/02/2013 Boostez votre application WP8 14
  • 15. Simulation Dashboard• Connexion réseau• Ecran de verrouillage• Rappel 13/02/2013 Boostez votre application WP8 15
  • 16. C# Async  bit.ly/perfwp8-async 13/02/2013 Boostez votre application WP8 16
  • 17. Sit down and relax SANS LES MAINS !Boostez votre application WP8 – Sans les mains ! votre application WP8 13/02/2013 Boostez 17
  • 18. Les compteurs Composition thread frame rate • Fill Rate UI thread frame rate – WP7 : limite entre 2 et 4 – WP8 : limite entre 5 et 6 Texture memory usage Surface counter Current.Host.Settings.EnableFrameRateCounter Current.Host.Settings.EnableRedrawRegionsIntermediate surface counter Screen fill rate counter 13/02/2013 Boostez votre application WP8 18
  • 19. Gains en performances• Progress Bar• Panorama• LongListSelector• ViewPortControl – Off thread input 13/02/2013 Boostez votre application WP8 19
  • 20. Accrochez-vous COMPILATION DANS LE 13/02/2013 Boostez votre application WP8 20
  • 21. Du code C# au code machineDevice Développeur Compilateur Intermediate Code C# C# Language Compilateur Code machine JIT 13/02/2013 Boostez votre application WP8 21
  • 22. Génération et utilisation du code machine • Avantages – Le code IL est indépendant de la machine – On ne compile pas le code dont on ne se sert pas • Inconvénients – Ajoute un surcoût à l’exécution – Handicap pour le temps de démarrage des applications 13/02/2013 Boostez votre application WP8 22
  • 23. Une solution ?• Ne plus faire de code IL ?• Faire le JIT « à l’avance » ?• Ce n’est pas une idée nouvelle : NGEN – Exemple : Paint.Net 13/02/2013 Boostez votre application WP8 23
  • 24. NGEN Compilateur Intermediate Code C# NGEN C# LanguageCode machine 13/02/2013 Boostez votre application WP8 24
  • 25. NGEN : oui, mais… Mscorlib.dll App1.exe Library.dll App2.exe 13/02/2013 Boostez votre application WP8 25
  • 26. NGEN : oui, mais… Mscorlib.dll App1.exe Library.dll App2.exe 13/02/2013 Boostez votre application WP8 26
  • 27. NGEN : oui, mais… Mscorlib.dll App1.exe Library.dll App2.exe 13/02/2013 Boostez votre application WP8 27
  • 28. De quoi a-t-on besoin ?• Un démarrage rapide – Supprimer le coût du JIT au démarrage• Déploiement facile et rapide – Temps d’exécution de NGEN trop long• Pouvoir gérer les mises à jour de l’OS – Ne pas perdre les images compilées après update 13/02/2013 Boostez votre application WP8 28
  • 29. Recompilation en cascade : pourquoi ?class Base 0x0 MethodTable int 0x4 i string 0x8 s virtual voidclass AppDerived 0x0 MethodTable 0x4 i int 0x8 s int int return 0xC j 13/02/2013 Boostez votre application WP8 29
  • 30. int foo(int a) { return a + j; } 0x0 MethodTable 0x4 i 0x8 s 0xC j 13/02/2013 Boostez votre application WP8 30
  • 31. Evolution de la classe mèreclass Base 0x0 MethodTable int string 0x4 i int virtual void 0x8 s 0xC k 13/02/2013 Boostez votre application WP8 31
  • 32. Le code généré devient invalide L’offset devrait être 0x10 ! 0x0 MethodTable 0x4 i 0x8 s 0xC k 0x10 j 13/02/2013 Boostez votre application WP8 32
  • 33. Idée : marquer les potentielschangements… Remplacé via une étape de link supplémentaire 13/02/2013 Boostez votre application WP8 33
  • 34. Résumé : MDIL• Compiler ce qui ne changera jamais directement• Ajouter des tokens pour ce qui pourra changer• Remplacer les tokens au moment de l’install• Mise à jour refaire l’édition de lien à nouveau 13/02/2013 Boostez votre application WP8 34
  • 35. Pourquoi compilation « dans le nuage » ? C# Source MSIL MDIL MDIL Code C# Compiler Assembly Assembly Compiler Téléchargement sur le device Cette partie se passe “dans le cloud” ! MDIL Native Native Assembly Image DLL Exécution Generator 13/02/2013 Boostez votre application WP8 35
  • 36. De quoi avait-on besoin ?• Un démarrage rapide• Déploiement facile et rapide• Pouvoir gérer les mises à jour de l’OS 13/02/2013 Boostez votre application WP8 36
  • 37. Comment tester ?• Avoir un vrai device  13/02/2013 Boostez votre application WP8 37
  • 38. AVEC UN PEU DE BONNE VOLONTÉ! 13/02/2013 Boostez votre application WP8 38
  • 39. La consommation mémoire• Respecter la limite bit.ly/perfwp8-memory – Mesurer la consommation mémoire• 2 nouveaux paramètres de BitmapImage – DecodePixelWidth – DecodePixelHeight 13/02/2013 Boostez votre application WP8 39
  • 40. démoCompteur mémoireSLIDE SHOW 13/02/2013 Boostez votre application WP8 40
  • 41. Fast-App-ResumeDÉMARRAGE ÉCLAIR 13/02/2013 Boostez votre application WP8 41
  • 42. démoMulti-taskingWP7 VS W8 13/02/2013 Boostez votre application WP8 42
  • 43. Fast-App-Switching ou Fast-App-Resume? Switch Création d’une nouvelle instance  Resume Reprise de l’instance suspendue  13/02/2013 Boostez votre application WP8 43
  • 44. démoFast-App-ResumeWP7 VS WP8 13/02/2013 Boostez votre application WP8 44
  • 45. 2 stratégies pour le Fast ResumeQue se passe-t-il si on presse le bouton « back » juste aprèsun fast resume ? 1. Afficher la dernière page visitée : « resume experience » annuler la navigation : e.Cancel = true; 2. Quitter l’application : « fresh instance experience » vider la back stack : RootFrame.RemoveBackEntry() 13/02/2013 Boostez votre application WP8 45
  • 46. Limitation du Fast Resume• Pas disponible pour applis Direct3D• Pas disponible pour WP7.8• Mise à jour d’une tuile à la sortie de l’appli – Deactivated – OnNavigationFrom• Speech recognition 13/02/2013 Boostez votre application WP8 46
  • 47. POUR LES PLUS COURAGEUX 13/02/2013 Boostez votre application WP8 47
  • 48. “C makes it easy to shoot yourself in the foot; C++ makes it harder,but when you do it blows your whole leg off” (Bjarne Stroustrup)UTILISER DU CODE NATIF 13/02/2013 Boostez votre application WP8 48
  • 49. Cas d’utilisation C++ 1 Portabilité Performance 2 Réutilisation 3 13/02/2013 Boostez votre application WP8 49
  • 50. Le SDK 8.0 ouvre la voie au code natifDifférents scénarios – 100% natif : application Direct3D – Hybride natif/managé • Implémentation d’un traitement en C/C++ • Réutilisation d’une librairie existante 13/02/2013 Boostez votre application WP8 50
  • 51. Support du C++ dans Windows Phone 8RValue references Forward declared enums Bidirectional fencesstatic_assert Alignment Data-dependency ordering • Visual C++ 2012Auto Standard-layout and trivial types exception_ptrTrailing return types Extended friend declarations Thread-local storage • Idem qu’avec Windows 8Lambdas Local and unnamed types as template arguments __func__ • Nouvelles fonctionnalités C++11Decltype Range-based for-loop C99 preprocessorRight angle brackets override and final long longextern templates Minimal GC supportnullptr AtomicsStrongly typed enums Strong compare and exchange 13/02/2013 Boostez votre application WP8 51
  • 52. démoC# vs C++FILTRE DE CONTRASTE 13/02/2013 Boostez votre application WP8 52
  • 53. démoInterop XAML / D3DUN CUBE QUI TOURNE ! 13/02/2013 Boostez votre application WP8 53
  • 54. Réveillez-vous !CONCLUSION 13/02/2013 Boostez votre application WP8 54
  • 55. Conclusion• Sans les mains – Compilation dans le cloud• Avec un peu de bonne volonté – Fast-App-Resume• Pour les plus courageux – Interop C++/DirectX/XAML• Et un SDK 8.0 très riche en nouveautés 13/02/2013 Boostez votre application WP8 55
  • 56. L’Accélérateur Windows Ressources Coaching Visibilité aka.ms/accelerateur-windows Plus d’info ? RDV stand Windows 8Accélérateur Windows
  • 57. Merci !Charlotte Gaidon Jérémy Alles 2day-app.com Formatrice WPF / Silverlight MVP / WPF Disciples charlotte.gaidon@gmail.com jeremy.alles@live.com @nutchad @jalpf www.japf.frMerci à Alex & Pierre (Microsoft) et aux collègues ;-)Retrouvez-nous sur le stand 58 13/02/2013 Boostez votre application WP8 57
  • 58. 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 TechDayshttp://notes.mstechdays.fr
  • 59. 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 accompagnerWindows 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