У меня неэффективный метод, как мне повысить его эффективность?

У меня есть простой способ сравнить массив объектов 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;
}
5
задан Ant Swift 12 October 2011 в 14:58
поделиться