我在远程位置有大约 300k 图像文件。我下载(必须)并将这些文件的详细信息写入文本文件(带有一些附加信息)。由于我获得的信息的性质,我必须在每个文件到达时对其进行处理(我还将每个文件信息写入文件行)以获取某种形式的统计信息,例如,我有一个带有属性的对象列表大小和计数,看看我有多少特定尺寸的图像。
我还考虑过在不保留任何统计信息的情况下将所有内容读取和写入文件,我可以再次打开文件以添加统计信息。但我想不出一种方法来处理 250k 行多属性文件以获取统计信息。
我知道列表(是的,我有 2 个)并且每个项目的恒定循环都在干扰应用程序,但还有其他方法吗?现在已经 2 小时了,应用程序仍在 26k 上。对于每个图像项,我会做这样的事情来保持计数,我检查图像是否具有之前确实出现的特定大小,我将其添加到该列表项中。
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;
}