Tôi có một phương pháp đơn giản để so sánh một mảng các đối tượng FileInfo với danh sách tên tệp để kiểm tra xem tệp nào đã được xử lý. Danh sách chưa xử lý sau đó được trả về.Tôi có phương pháp không thực hiện, làm cách nào để cải thiện hiệu quả của nó?
Vòng lặp của phương thức này lặp lại cho khoảng 250.000 đối tượng FileInfo. Điều này đang dành một lượng thời gian khiêu dâm để cạnh tranh.
Tính không hiệu quả rõ ràng là lệnh gọi Chứa phương thức trên bộ sưu tập processedFiles.
Trước tiên làm cách nào để kiểm tra để chắc chắn rằng sự nghi ngờ của tôi là đúng về nguyên nhân và thứ hai, làm cách nào tôi có thể cải thiện phương pháp để tăng tốc quá trình?
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;
}
Vì (1) sử dụng một trình lược tả phong nha, ví dụ: DotTrace từ JetBrains (bản dùng thử miễn phí). –