Szybkie trochę odniesienia na podstawie dokumentu powołanego nie wykazuje wzrost wydajności w moim systemie większych niż rozmiar bufora 128KB. Twój przebieg może się różnić, skorzystaj z poniższego.
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();
}
Dlaczego nie pozwolić .NET obsłużyć bufora i po prostu napisać, jak trzeba? – cjk
Po prostu spróbuj. Napisz mały test porównawczy, używając StopWatch i podaj nam wyniki. –
Podejrzewam, że "bufor", o którym mowa, to bufor, który musisz zadeklarować, gdy jesteś np. kopiowanie z jednego strumienia do drugiego (tj. ile bajtów odczytałeś ', a następnie' Write' w jednej iteracji). –