26 votos

Cuándo utilizar .NET BufferedStream clase?

El sitio de MSDN estados:

Un buffer es un bloque de bytes en la memoria se utiliza para almacenar en caché los datos, reduciendo así el número de llamadas a la operación sistema. Los búferes de mejorar la lectura y escritura rendimiento. Un búfer puede ser utilizado para ya sea de lectura o escritura, pero nunca ambos simultáneamente. La Lectura y Métodos de escritura de BufferedStream mantener automáticamente el búfer.

Debo usar esta clase en cada ocasión posible?

41voto

dewald Puntos 1804

Según Brad Abrams, casi nunca: enlace

No, No es cero beneficio de envolver un BufferedStream alrededor de un FileStream. Hemos copiado BufferedStream del búfer de lógica en FileStream hace alrededor de 4 años para fomentar la mejor manera predeterminada el rendimiento... De hecho, creo que no hay Corrientes en el .NET Framework que lo requieren, pero que podría ser necesaria por la costumbre Secuencia de implementación si no hacen el almacenamiento en búfer de forma predeterminada.

10voto

hacker Puntos 512

El siguiente es el texto de un curso online que estoy tomando:

El BufferedStream clase de hormigón es una clase que extiende la clase Stream y se utiliza para proporcionar un adicional de búfer de memoria a otro tipo de flujo, tanto de forma sincrónica y de forma asincrónica. El BufferedStream la clase debe ser configurado para leer o escribir cuando una instancia de la la clase se crea, pero la BufferedStream no se puede configurar para realizar las tareas en el mismo tiempo.

Microsoft ha mejorado el rendimiento de todas las corrientes de la .NET Framework incluyendo un búfer. El rendimiento mejorado notablemente por la aplicación de un BufferedStream existentes corrientes, tales como FileStream o MemoryStream. La aplicación de un BufferedStream a una ya existente .NET Marco secuencia de resultados en un doble búfer.

La aplicación más común de la BufferedStream clase es personalizada secuencia de clases que no incluyen un construido-en el buffer.

7voto

idn Puntos 41

Mejor de los casos que conozco es cuando BinaryFormatter serializar/deserializar directamente desde NetworkStream. Uso de BufferedStream entre medio de aumentar el rendimiento diez veces.

2voto

Anton Gogolev Puntos 59794

Lo que debe ser utilizado en cada ocasión posible, es el sentido común. No hay ningún uso en la utilización de esta clase de lectura-escritura a partir de un MemoryStream, pero puede ser muy útil cuando se hace de la red o de e / s de disco (si Flujos de estos subsistemas no búfer en su propio).

2voto

GvS Puntos 28137

El archivo normal de secuencias de e/S ya están amortiguados por el uso de un StreamReader/StreamWriter.

Desde operaciones de lectura/escritura en los arroyos, normalmente uso el de Lectura/Escritura de métodos que tengan una matriz de bytes, que, naturalmente, proporcionar algunos búfer de sí mismo.

Si utiliza muy pequeños arreglos, o el uso WriteByte, usted puede obtener un mejor rendimiento mediante el uso de un BufferedStream en el medio.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X