Constantin: Dzięki! Ten link ma EXE z wiersza poleceń, który wykonuje test, którego szukałem.
ja też znalazłem link wyłączenia tej strony do bardziej ciekawy artykuł (w Word i PDF) na tej stronie: Sequential File Programming Patterns and Performance with .NET
w tym artykule, to mówi o niebuforowanej Występ pliku (IOW, brak odczytu/buforowanie zapisu - tylko surowe wydajność dysku)
podane wprost z artykułu:
nie ma prosty sposób wyłączyć FileStream buforowanie w V2 .NET ram.. Trzeba odwołać się do systemu plików Windows bezpośrednio do uzyskania niebuforowanej uchwyt pliku, a następnie 'wrap' wynik w FileStream jako następuje w C#:
[DllImport("kernel32", SetLastError=true)]
static extern unsafe SafeFileHandle CreateFile(
string FileName, // file name
uint DesiredAccess, // access mode
uint ShareMode, // share mode
IntPtr SecurityAttributes, // Security Attr
uint CreationDisposition, // how to create
uint FlagsAndAttributes, // file attributes
SafeFileHandle hTemplate // template file
);
SafeFileHandle handle = CreateFile(FileName,
FileAccess.Read,
FileShare.None,
IntPtr.Zero,
FileMode.Open,
FILE_FLAG_NO_BUFFERING,
null);
FileStream stream = new FileStream(handle,
FileAccess.Read,
true,
4096);
Wywołanie CreateFile() z flagą FILE_FLAG_NO_BUFFERING mówi systemowi plików o obejściu całego oprogramowania pamięci podręcznej dla pliku. „true” wartość przekazana jako trzeci argument do konstruktora FileStream wskazuje, że strumień powinien własność uchwytu pliku, co oznacza, że uchwyt plik zostanie automatycznie zamknięty gdy strumień jest zamknięta. Po tym, hokus-krokus, niepustukowany strumień pliku jest odczytywany i zapisywany w ten sam sposób, jak każdy inny.
Głosowałem za tym, ale to nie zadziałało po testach - niestety do tego momentu było już za późno na usunięcie mojego głosu! Kod nie kompiluje (nie może przekazać 'FileAccess.Read' i podobnego do' CreateFile() 'i jeśli wpiszesz wyliczenia, kod nie działa - nie może przekazać' null' jako hTemplate. – Oliver
@Oliver : Nie patrzyłem na ten kod w (* wygląda na zegarek *) przez 7 lat, więc prawdopodobnie coś się zmieniło. Jestem pewien, że działało 7 lat temu z C#/.NET 2.0 w VS2005 (a może VS2008, nie jestem pewien, czy przełączyłem się jeszcze w tym momencie.) Zobaczę, czy uda mi się znaleźć oryginalny kod, którego używałem, i odesłać go, jeśli go znajdę. – Pretzel