Cuando se usa ToList()
, ¿hay un impacto en el rendimiento que deba considerarse?
Estaba escribiendo una consulta para recuperar archivos de un directorio, que es la consulta:
string[] imageArray = Directory.GetFiles(directory);
Sin embargo, como me gusta trabajar con él List<>
, decidí poner ...
List<string> imageList = Directory.GetFiles(directory).ToList();
Entonces, ¿hay algún tipo de impacto en el rendimiento que deba tenerse en cuenta al decidir hacer una conversión como esta, o que solo se tenga en cuenta al tratar con una gran cantidad de archivos? ¿Es esta una conversión insignificante?
Add
o Remove
, lo dejaría como IEnumerable<T>
(o incluso mejor var
)
EnumerateFiles
lugar de GetFiles
, por lo que solo se creará una matriz.
GetFiles(directory)
, como se implementa actualmente en .NET, prácticamente lo hace new List<string>(EnumerateFiles(directory)).ToArray()
. Entonces GetFiles(directory).ToList()
crea una lista, crea una matriz a partir de eso, luego crea una lista nuevamente. Como dice 2kay, deberías preferir hacer EnumerateFiles(directory).ToList()
aquí.
List<T>
a favor de unaT[]
si se hace que el código sea más lógico / lectura / mantenible (a menos que, por supuesto, la conversión fue causando notables problemas de rendimiento en cuyo caso me re- visitarlo, supongo).