gpt4 book ai didi

c# - 如何以高效的方式编写 1GB 文件 C#

转载 作者:可可西里 更新时间:2023-11-01 09:13:34 25 4
gpt4 key购买 nike

我有大约 1GB 的 .txt 文件(包含超过一百万行),我有一个字符串列表,我试图从文件中删除字符串列表中存在的所有行并创建新文件但是这需要很长时间。

using (StreamReader reader = new StreamReader(_inputFileName))
{
using (StreamWriter writer = new StreamWriter(_outputFileName))
{
string line;
while ((line = reader.ReadLine()) != null)
{
if (!_lstLineToRemove.Contains(line))
writer.WriteLine(line);
}

}
}

如何提高代码的性能?

最佳答案

您可以通过使用 PLINQ 并行执行工作来获得一些加速,同时从列表切换到哈希集也将大大加快 Contains( 检查。HashSet 对于只读操作是线程安全的。

private HashSet<string> _hshLineToRemove;

void ProcessFiles()
{
var inputLines = File.ReadLines(_inputFileName);
var filteredInputLines = inputLines.AsParallel().AsOrdered().Where(line => !_hshLineToRemove.Contains(line));
File.WriteAllLines(_outputFileName, filteredInputLines);
}

如果输出文件与输入文件的顺序相同并不重要,您可以删除 .AsOrdered() 并获得一些额外的速度。

除此之外,您实际上只是 I/O 限制,让它更快的唯一方法是获得更快的驱动器来运行它。

关于c# - 如何以高效的方式编写 1GB 文件 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36744249/

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