7 astuces pour optimiser votre CSharp.

1. Éviter le ramasseur d'ordures

Le langage de programmation C# est construit sur le .NET Framework, qui a lui-même été construit sur le garbage collector. Cela permet de maintenir des performances assez rapides, mais vous pouvez encore faire mieux en évitant les variables qui nécessitent un cycle de collecte des "déchets" lorsqu'elles sont libérées (comme les objets). Ainsi éviter le garbage collector permet de maintenir des niveaux de performance élevés et d'optimiser l'utilisation de la mémoire.

2. Utilisez les StackAllocators (Allocateur de recyclage C#)

Si votre application fait beaucoup d'allocation de mémoire, vous pouvez obtenir de meilleures performances en évitant le coût de la libération et de l'allocation de mémoire par vous-même. Vous pouvez y parvenir en vous déplaçant de haut en bas dans votre tas jusqu'à ce que vous trouviez un bloc inutilisé, puis en le marquant pour le réutiliser. C'est ce que fait un allocateur basé sur la pile. Il alloue la mémoire à partir d'une région appelée pile sur laquelle de nouveaux blocs sont placés lorsque des blocs libérés sont trouvés.

3. Ne réutilisez pas les références d'objets

Il s'agit d'une erreur très courante chez les programmeurs C# débutants : au lieu de nettoyer un objet et de libérer sa mémoire lorsqu'il n'est plus nécessaire, ils continuent simplement à l'utiliser jusqu'à ce qu'il n'y ait plus de mémoire disponible.

Cette erreur peut s'avérer particulièrement dangereuse dans les applications serveur où de nombreux programmes partagent un serveur ; la fuite d'une référence d'objet d'un programme peut entraîner l'arrêt de tous les autres programmes utilisant ce serveur. Pour éviter de créer des références fuyantes, définissez explicitement vos objets comme nuls lorsque vous avez fini de les utiliser - ou assurez-vous de ne créer que le nombre de références nécessaires.

4. Éviter le mappage de la mémoire (pour les gros fichiers/systèmes de fichiers)

L'un des pièges de l'utilisation des méthodes File.ReadAllText() ou File.ReadAllLines() de C# est qu'elles chargent immédiatement tout le contenu en mémoire. Cela peut entraîner des goulots d'étranglement au niveau des performances si vous avez affaire à des fichiers très volumineux et/ou à des sous-systèmes de stockage lents, comme les disques durs. Une façon de contourner ce problème est d'utiliser un fichier mappé en mémoire, qui crée un espace virtuel en mémoire qui ressemble à un fichier sur le disque.

5. Évitez les sérialisations/désérialisations inutiles

Le .NET Framework fournit des capacités de sérialisation et de désérialisation d'objets prêtes à l'emploi. Il en va de même pour plusieurs langages .NET de base tels que C#, F# et Visual Basic .NET. Toutefois, dans certaines circonstances, ces fonctions peuvent entraîner des problèmes de performance importants dans votre application. Cela est particulièrement vrai lorsqu'une quantité non négligeable de données doit être sérialisée ou désérialisée.

Si vous utilisez régulièrement ces fonctions, il est important que vous compreniez leur fonctionnement afin de pouvoir choisir une stratégie appropriée pour le traitement de vos données.

6. JIT pour éliminer les méthodes inutilisées

Le compilateur Just-In-Time (JIT) est un processus qui lit le CIL et le traduit en code natif. Lorsque vous construisez une application, vous ne voulez pas que le JIT compile toutes vos classes - en particulier si elles ne sont utilisées qu'une seule fois ou plusieurs fois au démarrage. En ne compilant que ce qui est nécessaire quand c'est nécessaire, vous pouvez faire démarrer votre application beaucoup plus rapidement !

Il existe plusieurs façons de s'assurer que le démarrage de votre application est plus rapide, notamment en utilisant la réflexion : Supprimez les méthodes inutilisées de ces objets à l'aide de System.Reflection.Emit.

7. Mesurez en mode Production plutôt qu'en mode Débogage

Dans de nombreux langages de programmation, les applications sont exécutées dans un mode de débogage spécial qui permet aux développeurs de définir des points d'arrêt et d'imprimer des messages de débogage. C'est un excellent moyen pour les développeurs de tester leur code pendant qu'ils le développent - et pendant le développement, c'est essentiel. Mais une fois que vous avez fini de coder, vous devez repasser en mode production avant de mettre votre application en ligne.

L'exécution de votre application en mode production élimine les lignes de code supplémentaires qui ne sont essentielles que pendant le développement.

Un dernier moyen que je vais ajouter pour mieux optimiser une application .NET est d'utiliser un obfuscateur .NET. Cela vous aidera à optimiser fortement votre application et vous obtiendrez une application protégée, évitant la décompilation et la rétro-ingénierie.


Rejoindre la conversation