c# - 如何优化顺序读取和回溯文件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# - 由于遇到 StackOverFlowException 错误而终止进程,我哪里出错了?
- php - 在 php 中获取 span 标签的值并在 sql 语句中部署,不起作用
- postgresql - 将值插入表中不起作用
- awk - 如何将每隔一行的最后一列附加到后续行的最后一列
- php - 用于将 Hex 转换为 Dec 的 BCMath 代码 - 问题 - 代码中的错误?
- unity3d - Assets/Vuforia/Prefabs 中没有 ImageTarget
- regex - 外壳:替换任意“开始”和“结束”之间包含的特定文本的所有出现
- javascript - I want to check its on same origin or not?
- r - PCA中输入变量与主成分之间的关系
- python - 难以将嵌套字典的元素从数组更改为列表