2
我已经编写了一个程序来清理我在过去几个月收集的一些财务数据。它总共大约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构建适当的缓冲区。我发现的大多数例子都是为了下载,而不适用于阅读文本文件。我不能将整个文件加载到内存中来处理它,因为它太大了。我该怎么做?任何人都可以给我一些我可以使用的代码片段吗?感谢
随机一边 - 乔恩 - 为什么我们(SE)打破你的追踪?你没有配额吗? – 2012-08-13 06:21:53
@MarcGravell:是的。奇怪的是,它*在昨天Meta上对我显示了10分,但是SO是空白。我将在明天试着研究它。 – 2012-08-13 06:22:54
如果没有显然是错误的,在你的结束,也让我们知道你调用一个方法 - 我确信我们能说服蒙蒂来看待它,P特别 – 2012-08-13 06:23:51