Un poco de referencia rápida sobre la base de los espectáculos del Documento de Referencia ningún aumento en el rendimiento en mi sistema de más de 128 KB de tamaño de búfer. 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();
}
¿Por qué no vamos a .Net manejar el tampón y acaba de escribir como usted necesita? – cjk
Solo pruébalo. Escribe un pequeño punto de referencia usando StopWatch y cuéntanos los resultados. –
Sospecho que el "buffer" en cuestión es el buffer que tienes que declarar cuando estás, por ejemplo. copiar de una secuencia a otra (es decir, cuántos bytes 'Leer' y luego 'Escribir' en una iteración). –