Jak stworzyć szybki i wydajny zapis strumieniowy na dużych plikach rzadkich

Mam aplikację, która zapisuje duże pliki w wielu segmentach. Używam FileStream.Seek do pozycjonowania każdego wątku. Wydaje się, że gdy wywołam FileStream.Write w głębokiej pozycji w rzadkim pliku, zapis wyzwala operację „wypełniania zapasów” (zapis 0s) na wszystkich poprzednich bajtach, co jest powolne.

Czy istnieje bardziej skuteczny sposób radzenia sobie z tą sytuacją?

Poniższy kod demonstruje problem. Początkowy zapis zajmuje około 370 MS na moim komputerze.

    public void WriteToStream()
    {
        DateTime dt;
        using (FileStream fs = File.Create("C:\\testfile.file"))
        {   
            fs.SetLength(1024 * 1024 * 100);
            fs.Seek(-1, SeekOrigin.End);
            dt = DateTime.Now;
            fs.WriteByte(255);              
        }

        Console.WriteLine(@"WRITE MS: " + DateTime.Now.Subtract(dt).TotalMilliseconds.ToString());
    }

questionAnswers(2)

yourAnswerToTheQuestion