我有一个简单的方法,可以将FileInfo对象数组与文件名列表进行比较,以检查哪些文件已经被处理过。未处理的列表将被返回。
该方法的循环迭代大约250,000个FileInfo对象。这需要极长的时间来完成。
显然,效率低下是由于在processedFiles集合上调用Contains方法。
首先,我如何检查我的怀疑是否正确?其次,我如何改进此方法以加快处理速度?
该方法的循环迭代大约250,000个FileInfo对象。这需要极长的时间来完成。
显然,效率低下是由于在processedFiles集合上调用Contains方法。
首先,我如何检查我的怀疑是否正确?其次,我如何改进此方法以加快处理速度?
public static List<FileInfo> GetUnprocessedFiles(FileInfo[] allFiles, List<string> processedFiles)
{
List<FileInfo> unprocessedFiles = new List<FileInfo>();
foreach (FileInfo fileInfo in allFiles)
{
if (!processedFiles.Contains(fileInfo.Name))
{
unprocessedFiles.Add(fileInfo);
}
}
return unprocessedFiles;
}