【发布时间】:2018-03-28 14:25:04
【问题描述】:
我有 20 多个文件,每个文件包含近 100 万行(5 GB),我需要加快读取过程,因此我尝试并行读取这些文件,但所需时间比按顺序阅读它们。有什么方法可以并行读取非常大的文件?
Parallel.ForEach(sourceFilesList, filePath =>
{
if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath))
{
StreamReader str = new StreamReader(filePath);
while (!str.EndOfStream)
{
var temporaryObj = new object();
string line = str.ReadLine();
// process line here
}
}
});
【问题讨论】:
-
什么样的文件?
-
您如何确定问题不是您在处理过程中所做的?
-
是文本文件,
-
我看到你是这个网站的新手......所以,欢迎来到 StackOverflow......如果你先做一些研究,你会很容易更快地解决你的问题..@ 987654321@
-
这很可能是 IO 瓶颈……您可以做的是对代码进行基准测试并查明瓶颈所在。读完每一行后你会做什么?如果你没有足够快地处理它们,内存也可能是一个问题。
标签: c# multithreading streamreader