Maison > développement back-end > C++ > Comment puis-je lire efficacement de grands fichiers texte en C # à l'aide de flux?

Comment puis-je lire efficacement de grands fichiers texte en C # à l'aide de flux?

Susan Sarandon
Libérer: 2025-01-25 09:36:13
original
933 Les gens l'ont consulté

How Can I Efficiently Read Large Text Files in C# Using Streams?

Optimisation de la lecture de flux C# pour les fichiers texte volumineux

Introduction :

Le traitement efficace de fichiers texte volumineux (plus de 100 Mo) en C# nécessite une attention particulière. La simple utilisation de StreamReader.ReadToEnd() peut entraîner des goulots d'étranglement importants en termes de performances. Cet article décrit une approche de lecture fragmentée plus efficace utilisant des flux.

Stratégie de lecture améliorée :

Pour des performances optimales avec des fichiers volumineux, nous recommandons ce qui suit :

  1. Employer BufferedStream pour emballer le FileStream. Cette étape cruciale met en cache les données, minimisant ainsi les opérations d'E/S disque.
  2. Implémentez un thread de travail en arrière-plan pour lire le fichier en morceaux gérables.
  3. Intégrez une barre de progression dans le travailleur d'arrière-plan pour suivre visuellement la progression de la lecture.
  4. Inclure un mécanisme d'annulation pour permettre d'interrompre le processus de lecture si nécessaire.
  5. Renvoyer les données accumulées (conservées dans un StringBuilder) au fil de discussion principal une fois terminée.

Exploiter BufferedStream :

BufferedStream accélère considérablement la lecture en mettant en cache les données en mémoire. Ses méthodes Read et Write gèrent automatiquement la gestion des tampons.

Optimisation de StringBuilder :

Le prédimensionnement du StringBuilder avec la longueur de flux connue (si disponible) évite les réallocations répétées, augmentant ainsi encore l'efficacité.

Autres améliorations :

  • Après le chargement, identifiez le(s) caractère(s) de fin de ligne du fichier.
  • Pour les fichiers extrêmement volumineux, envisagez un modèle producteur-consommateur avec des tâches distinctes pour la lecture et le traitement, maximisant ainsi le parallélisme.

Considérations relatives à la plateforme :

  • Les gains de performances liés à l'utilisation de BufferedStream sont généralement plus prononcés dans .NET 3.x (32 bits) que dans .NET 4.5 (64 bits).
  • Dans des applications spécifiques, comme le streaming de gros fichiers CSV dans ASP.NET MVC, BufferedStream offre des améliorations substantielles des performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal