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