StreamReader et tampon en C#
J'ai une question à propos de l'utilisation de la mémoire tampon avec StreamReader.
Ici: http://msdn.microsoft.com/en-us/library/system.io.streamreader.aspx vous pouvez le voir:
"Lors de la lecture à partir d'un Flux, il est plus efficace d'utiliser un tampon, qui est la même taille que la mémoire tampon interne de la rivière.".
Selon cette blog , la taille du tampon interne d'un StreamReader est 2k, donc je peux aisément lire un fichier de quelques ko /s à l'aide de la Read()
en évitant les Read(Char[], Int32, Int32)
.
En outre, même si un fichier est gros je peut construire le StreamReader en passant d'une taille pour la tampon
Alors, quel est le besoin d'un tampon?
OriginalL'auteur gravitar | 2010-06-30
Vous devez vous connecter pour publier un commentaire.
À la recherche à la mise en œuvre de
StreamReader.Read
méthodes, vous pouvez voir les deux d'appel interneReadBuffer
méthode.Read()
méthode de lit pour la première fois dans un tampon interne, puis des avances sur le tampon, un par un.Read(char[]...)
appelle laReadBuffer
trop, mais plutôt dans le tampon externe fourni par l'appelant:Donc je suppose que la seule perte de performance est que vous devez appeler
Read()
beaucoup plus de fois queRead(char[])
et comme c'est une méthode virtuelle, les appels se ralentir.OriginalL'auteur František Žiačik
Je pense que cette question a déjà été demandé quelque peu différent sur stackoverflow: Comment écrire le contenu d'un flux de données en un autre flux .net?
"Lors de l'utilisation de la méthode de Lecture, il est plus efficace d'utiliser un tampon, qui est la même taille que la mémoire tampon interne de la rivière, où la mémoire tampon interne est mis à votre choix de la taille du bloc, et de toujours lire moins de la taille de bloc. Si la taille de la mémoire tampon interne n'a pas été spécifié lorsque le flux a été construit, sa taille par défaut est de 4 kilo-octets (4096 octets)."
OriginalL'auteur garzanti