Khi sử dụng ToList()
, có một tác động hiệu suất cần được xem xét?
Tôi đã viết một truy vấn để lấy các tập tin từ một thư mục, đó là truy vấn:
string[] imageArray = Directory.GetFiles(directory);
Tuy nhiên, vì tôi thích làm việc List<>
thay vào đó, tôi quyết định đưa vào ...
List<string> imageList = Directory.GetFiles(directory).ToList();
Vì vậy, có một số loại tác động hiệu suất nên được xem xét khi quyết định thực hiện chuyển đổi như thế này - hoặc chỉ được xem xét khi xử lý một số lượng lớn tệp? Đây có phải là một chuyển đổi không đáng kể?
Add
hoặc Remove
, tôi sẽ để nó dưới dạng IEnumerable<T>
(hoặc thậm chí tốt hơn var
)
EnumerateFiles
thay vì GetFiles
vậy, chỉ có một mảng sẽ được tạo.
GetFiles(directory)
, vì nó được triển khai trong .NET hiện tại, khá nhiều new List<string>(EnumerateFiles(directory)).ToArray()
. Vì vậy, GetFiles(directory).ToList()
tạo một danh sách, tạo một mảng từ đó, sau đó tạo lại một danh sách. Giống như 2kay nói, bạn nên thích làm EnumerateFiles(directory).ToList()
ở đây.
List<T>
trong lợi của mộtT[]
nếu nó làm cho mã logic hơn / dễ đọc / bảo trì (tất nhiên trừ việc chuyển đổi đã gây chú ý vấn đề hiệu suất trong trường hợp này tôi muốn tái thăm nó tôi đoán).