У меня есть простой способ сравнить массив объектов FileInfo со списком имен файлов, чтобы проверить, какие файлы уже были обработаны. Затем возвращается необработанный список.
Цикл этого метода повторяется для примерно 250 000 объектов FileInfo. Это отнимает неприличное количество времени, чтобы соревноваться.
Очевидно, что неэффективность заключается в вызове метода Contains для коллекции processingFiles.
Во-первых, как я могу проверить, верно ли мое подозрение относительно причины, и, во-вторых, как я могу улучшить метод, чтобы ускорить процесс?
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;
}