visual read new clase c# size buffer filestream

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?



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(); }