gpt4 book ai didi

c# - 并行读取一个非常大的文件 C#

转载 作者:行者123 更新时间:2023-11-30 20:26:40 26 4
gpt4 key购买 nike

我有 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
}
}
});

最佳答案

对于大文件最好使用缓冲读取器。这样的事情会有所帮助。

using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, 
FileShare.ReadWrite))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
string line;
while ((line = sr.ReadLine()) != null)
{

}
}

为什么 BufferedStream 更快

缓冲区是内存中的一个字节 block ,用于缓存数据,从而减少对操作系统的调用次数。缓冲区提高读写性能。缓冲区可用于读取或写入,但不能同时用于两者。 BufferedStream 的 Read 和 Write 方法自动维护缓冲区。

关于c# - 并行读取一个非常大的文件 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49527209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com