1
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.
2
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.
3
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.
4
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.
5
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.
6
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.