小编Bec*_*cco的帖子

将大数据写入文件缓存问题

当我向文件写入大量<2GB的数据时,我遇到了问题.第一个~1.4GB数据被快速写入(100 MB/s),而代码变得非常慢(0-2 MB/s).

我的代码(简化)是:

//FileOptions FILE_FLAG_NO_BUFFERING = (FileOptions)0x20000000;
    FileOptions fileOptions = FileOptions.SequentialScan;

    int fileBufferSize = 1024 * 1024;
    byte[] Buffer = new byte[32768];

    Random random = new Random();
    long fileSize = 2588490188;
    long totalByteWritten = 0;

    using (FileStream fs = File.Create(@"c:\test\test.bin", fileBufferSize, fileOptions))
    {
        while (totalByteWritten < fileSize)
        {
            random.NextBytes(Buffer);
            fs.Write(Buffer, 0, Buffer.Length);
            totalByteWritten += Buffer.Length;
            //Thread.Sleep(10);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我认为存在与缓存问题相关的问题,实际上在"快速写入性能"期间,RAM的使用量也会增加,当RAM使用率停止增加时,性能会下降.

我尝试过的:

  • 更改为异步写入 - >没有显着变化

  • 更改数组缓冲区大小 - >没有明显变化

  • 更改fileBufferSize - >没有明显的变化,但是有一个大的缓冲区~100MB,写入性能很快,当RAM使用停止增加时,写入性能变为0,然后,一段时间后,回到100MB,它接收缓存缓冲区是"酡"

  • 更改fileOptionWriteThrough - >性能总是慢..

  • 在xx循环后添加fs.Flush(true) - …

caching file c#-4.0

5
推荐指数
1
解决办法
392
查看次数

标签 统计

c#-4.0 ×1

caching ×1

file ×1