read - streamwriter en c#
C#FileStream: Tamaño de búfer óptimo para escribir archivos de gran tamaño (2)
Supongamos que estoy escribiendo un par de archivos en el disco, entre 2 MB y 5 GB. ¿Cuáles son los valores de buffer más sensibles para FileStream?
¿Es sensato trabajar con buffersizes de varios megabytes, o debería seguir con buffers kilobyte?
El tamaño del buffer predeterminado es 4 KiB.
Además, consulte aquí: Patrones de programación de archivos secuenciales y rendimiento con .NET
Un pequeño punto de referencia rápido basado en el documento al que se hace referencia no muestra un aumento en el rendimiento en mi sistema mayor que el tamaño del búfer de 128 KB. Su millaje puede variar, no dude en utilizar el siguiente.
Stopwatch sw = new Stopwatch();
Random rand = new Random(); // seed a random number generator
int numberOfBytes = 2 << 22; //8,192KB File
byte nextByte;
for (int i = 1; i <= 28; i++) //Limited loop to 28 to prevent out of memory
{
sw.Start();
using (FileStream fs = new FileStream(
String.Format(@"C:/TEMP/TEST{0}.DAT", i), // name of file
FileMode.Create, // create or overwrite existing file
FileAccess.Write, // write-only access
FileShare.None, // no sharing
2 << i, // block transfer of i=18 -> size = 256 KB
FileOptions.None))
{
for (int j = 0; j < numberOfBytes; j++)
{
nextByte = (byte)(rand.Next() % 256); // generate a random byte
fs.WriteByte(nextByte); // write it
}
}
sw.Stop();
Console.WriteLine(String.Format("Buffer is 2 << {0} Elapsed: {1}", i, sw.Elapsed));
sw.Reset();
}