我在遠程位置有大約30萬個圖像文件。我下載(必須)並將這些文件的詳細信息寫入文本文件(附加一些信息)。由於我得到的信息的性質,我必須處理每個文件,因爲它們到達(我也寫每個文件信息到文件行)以獲得某種形式的統計信息,例如,我有一個對象列表的屬性大小和數量,看看我有多少特定尺寸的圖像。從c中的文件計算統計信息的最佳方法#
我也想過讀取和寫入文件,而不保留任何統計信息,我可以再次打開文件添加統計信息。但我想不出一種方法來處理統計信息的250k行多屬性文件。
我知道列表(是的,我有他們2)和每個項目的恆定循環是竊聽應用程序,但有沒有另一種方式?現在已經過了2個小時,應用程序仍然在26K。對於每個圖像項目,我都會這樣做,以便在檢查圖像是否具有之前確定的尺寸的情況下進行計數,並將其添加到該List項目中。
public void AddSizeTokens(Token token)
{
int index = tokenList.FindIndex(item => item.size== token.size);
if (index >= 0)
tokenList[index].count+=1;
else
tokenList.Add(token);
}
什麼從文件一行寫到貌似
Hits Size Downloads Local Loc Virtual ID
204 88.3 4212 .../someImage.jpg f-dd-edb2-4a64-b42
我下載的文件如下圖所示;
try
{
using (WebClient client = new WebClient())
{
if (File.Exists(filePath + "/" + fileName + "." + ext))
{
return "File Exists: " + filePath + "/" + fileName + "." + ext;
}
client.DownloadFile(virtualPath, filePath + "/" + fileName + "." + ext);
return "Downloaded: " + filePath + "/" + fileName + "." + ext;
}
}
catch (Exception e) {
return"Problem Downloading " + fileName + ": " + e.Message;
}
你爲什麼要下載該文件?你需要它的內容嗎?你可以在不下載的情況下獲得它的大小。也許創建一個小的SQL數據庫是一個選項? – VladL
請記住,由於您下載圖像文件,您的瓶頸可能是您的連接速度。如果我們的平均文件大小爲200KB(對於image imho不那麼重要),則您以〜722KB/s的速率下載了5078,125MB的文件,並在大約2小時內提及了26k文件。如果這是一個家庭連接,我認爲這是一個相當可觀的速度,特別是如果你爲每個圖像創建一個單獨的連接。 – Destrictor
圖像大約150KB,我必須下載它們,這是確定的,因爲尺寸不是唯一的問題。我添加了下載方法。 – mechanicum