Introduction
- Évolution de la plateforme .Net et de son écosystème.
- Optimiser : quoi, comment, quand ? Objectifs.
Travaux pratiques
Analyse de l’exécution d’une application .Net via l’outils WinDebug.
Le ramasse-miettes GC, optimisation des allocations et diagnostic
- La gestion de la mémoire par le ramasse-miettes et API GC.
- Outils de diagnostic de Visual Studio, de JetBrains et BenchmarkDotNet.
- Le Pattern Dispose et l’implémentation de IDisposable.
- Recommandations pour éviter les fuites mémoires potentielles d’une application .Net.
- Garde-fous au design time via les Règles d’Analyse de code.
- Outils de l’écosystème .Net pour tracer les erreurs de boxing, de closure et références nulles.
Travaux pratiques
Détection et correction des fuites de mémoire. Règles d’analyse et outils de diagnostic.
Méthodes C# et constructions du langage
- Méthodes C# et l’évolution du codage.
- Méthodes d’extension et architecture LINQ.
- Méthodes asynchrones et utilisation des mots clés async/await.
- Mesures de performance des allocations des types Value comparés aux types Reference.
- Nouveau type valeur ValueTuple de C# 7.0.
- Passage de paramètres et retour par référence de C# 7.2.
- Avantages de la programmation fonctionnelle en C# et comparaison au langage fonctionnel F#.
- Pattern Matching en C#.
Travaux pratiques
Exercices et démonstrations concrètes sur les éléments de codage et la programmation fonctionnelle.
Tableaux et collections
- Performance des opérations sur les données.
- Collections du .Net et caractéristiques.
- Implémentation de l’interface IEquatable.
- Pointeur IntPtr et le mot clé C# 7.2 stackalloc pour allouer sur la pile.
Travaux pratiques
Exercices et démonstrations sur les collections et allocations sur la pile.
La librairie TPL du .Net 4.7 : asynchronisme et parallélisme
- Évolution de la gestion des appels asynchrones via les mots clés async/await.
- Les nouvelles classes de System.Threading.Tasks.
- Paralléliser les itérations for et foreach. Design pattern en matière de parallélisme.
- Utilisation de l’infrastructure PLinq.
- Diagnostic de performance via le NuGet BenchmarkDotNet et DotTrace de JetBrains.
Travaux pratiques
Exercices et démonstrations sur le parallélisme. Diagnostics via BenchmarkDotNet.
Conclusion
- Incidence des fonctionnalités C# 8 et C# 9 sur le code et les applications .Net.
- Une synthèse et quelques conseils.
- Recommandations d’ouvrages et références internet.