【发布时间】:2012-08-09 08:49:20
【问题描述】:
我编写了一个程序来清理我几个月来收集的一些财务数据。它总共大约 100GB,并且每天都在增长,每个文件大约 1-2GB。它当前以文本文件格式存储。
以下代码用于清理数据:
static void Main()
{
string inputString;
string outputString;
// others variable omitted
string[] lineSplit;
foreach (string fullPath in Directory.GetFiles(inputDirectory))
{
using (StreamReader reader = new StreamReader(fullPath)) //read from input file
{
while ((line = reader.ReadLine()) != null)
{
//logic to clean data
...
///////////////////////////////////////////////////////////
using (StreamWriter writer = File.AppendText(outputFile))
{
writer.WriteLine(outputString);
}
}
}
}
}
它非常慢,我估计 100GB 的数据大约需要 3-4 天才能完成。我知道这是关于我的 IO 操作,因为我没有缓冲区等来做。我对 C# 还是比较陌生,我找不到任何相关示例来为 IO 构建适当的缓冲区。我发现的大多数示例都是用于下载的,不适用于阅读文本文件。而且我无法将整个文件加载到内存中进行处理,因为它太大了。我该怎么做?谁能给我一些我可以使用的sn-p代码?谢谢
【问题讨论】:
标签: c# performance io