如何优化顺序读取和回溯文件C#的位置?

时间:2018-11-04 15:49:52

标签: c# .net performance io buffer

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

我现在要做的是这个。

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%。因此,程序运行缓慢的事实一定是由于读取了文件。

0 个答案:

没有答案