首页 > 解决方案 > 如何优化顺序读取和回溯文件c#的位置?

问题描述

我有一个无限大的文件。我要找到具有不同长度的一些字节数组的文件段的最大匹配。

我现在要做的就是这个。

1-创建了一个FileStream fs

ForEach byte b in fs.

  save currentPosition.
  //these byte arrays are different depending on b
  ForEach byte array
          while matching bytes 
             read from fs.
          print matched sequence.
          seek to position

现在程序很慢。我怎样才能提高我对文件的阅读能力?

从我读到的,它fs有一个内部缓冲区,所以当我读一个字节时,它默认向前看 4kb。

我的问题:假设从该缓冲区满足了 while 循环内 fs 中字节的顺序读取,我是否正确?

如果是这样,当我回溯时会发生什么?缓冲区是否被破坏并且我再次读取每个字节数组的相同内容填充它?因为我需要相同的缓冲区,但我只想重申缓冲区。

此外,在我迭代了所有字节数组之后,我想继续下一步b该缓冲区会发生什么,因为我真正想要的是同一个缓冲区但没有第一个字节。

这是如何运作的?我是否需要为 FileStream 创建一个包装器,自己读取一个字节数组(该缓冲区),并满足我从该缓冲区的读取?

编辑:从任务管理器我看到我的程序使用的处理器的平均值是 2%。所以程序慢的事实一定是因为文件读取。

标签: c#.netperformanceiobuffer

解决方案


推荐阅读