多个读者可以更快地读取文件

时间:2014-07-11 01:00:28

标签: c# multithreading file-io task-parallel-library

所以我有一个大约200万行的大文件。文件读取是我的代码中的瓶颈。欢迎任何建议的方式和专家意见更快地阅读文件。从该文本文件中读取行的顺序并不重要。 所有行都是管道'|'分开的固定长度记录。

我试过了什么?我开始并行StreamReader并确保资源被正确锁定但这种方法失败了,因为我现在有多个线程争夺单个StreamReader并且浪费更多时间锁定等因此使得代码进一步减速。

一种直观的方法是打破文件然后读取它,但我希望保持文件完整无缺,并且仍能以某种方式更快地读取它。

1 个答案:

答案 0 :(得分:1)

我会尝试最大化我的缓冲区大小。默认大小为1024,增加此值应该会提高性能。我建议尝试其他缓冲区大小选项。

  

StreamReader(Stream,Encoding,Boolean,Int32)初始化一个新的   指定流的StreamReader类的实例,带有   指定的字符编码,字节顺序标记检测选项,和   缓冲区大小。