Cómo crear secuencias de archivos rápidas y eficientes en grandes archivos dispersos

Tengo una aplicación que escribe archivos grandes en varios segmentos. Utilizo FileStream.Seek para posicionar cada wirte. Parece que cuando llamo a FileStream.Write en una posición profunda en un archivo disperso, la escritura desencadena una operación de "relleno" (escritura de 0s) en todos los bytes anteriores, lo cual es lento.

¿Hay una manera más eficiente de manejar esta situación?

El siguiente código muestra el problema. La escritura inicial toma alrededor de 370 MS en mi máquina.

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta