Kullanırken ToList()
dikkate alınması gereken bir performans etkisi var mı?
Ben sorgu olan bir dizinden dosyaları almak için bir sorgu yazıyordu:
string[] imageArray = Directory.GetFiles(directory);
Ancak, onunla çalışmaktan hoşlandığım için List<>
, ...
List<string> imageList = Directory.GetFiles(directory).ToList();
Öyleyse, böyle bir dönüşüm yapmaya karar verirken göz önünde bulundurulması gereken veya yalnızca çok sayıda dosyayla uğraşırken göz önünde bulundurulması gereken bir tür performans etkisi var mı? Bu önemsiz bir dönüşüm mü?
Add
ya Remove
, ben gibi bırakacaktı IEnumerable<T>
(hatta daha iyi var
)
EnumerateFiles
yerine aramak daha iyidir GetFiles
, bu yüzden sadece bir dizi oluşturulacaktır.
GetFiles(directory)
, şu anda .NET'te uygulandığı gibi, hemen hemen öyle new List<string>(EnumerateFiles(directory)).ToArray()
. Böylece GetFiles(directory).ToList()
bir liste oluşturur, bundan bir dizi oluşturur, sonra tekrar bir liste oluşturur. 2kay'ın dediği gibi, EnumerateFiles(directory).ToList()
burada yapmayı tercih etmelisiniz .
List<T>
bir yanaT[]
elbette dönüşüm sürece (kod daha / mantıksal okunabilir / sürdürülebilir yaparsa oldu neden farkedilir ben yeniden ediyorum ki bu durumda performans sorunları ziyaret edin sanırım).