Czy podczas używania ToList()
istnieje wpływ na wydajność, który należy wziąć pod uwagę?
Pisałem zapytanie o pobranie plików z katalogu, którym jest zapytanie:
string[] imageArray = Directory.GetFiles(directory);
Ponieważ jednak lubię z nim pracować List<>
, zdecydowałem się na ...
List<string> imageList = Directory.GetFiles(directory).ToList();
Czy jest więc jakiś wpływ na wydajność, który należy wziąć pod uwagę, decydując się na taką konwersję - czy tylko w przypadku dużej liczby plików? Czy jest to pomijalna konwersja?
Add
lub Remove
zostawiłbym to jako IEnumerable<T>
(lub nawet lepiej var
)
EnumerateFiles
zamiast GetFiles
, aby powstała tylko jedna tablica.
GetFiles(directory)
, jak to jest obecnie zaimplementowane w .NET, prawie tak new List<string>(EnumerateFiles(directory)).ToArray()
. GetFiles(directory).ToList()
Tworzy więc listę, tworzy z niej tablicę, a następnie ponownie tworzy listę. Jak mówi 2kay, powinieneś wolał robić EnumerateFiles(directory).ToList()
tutaj.
List<T>
opowiada się zaT[]
, czy to sprawia, że kod jest bardziej logiczny / odczytu / utrzymaniu (o ile oczywiście konwersji została powodując zauważalne problemy z wydajnością w takim przypadku będę re- odwiedź to chyba).