Ao usar ToList()
, há um impacto no desempenho que precisa ser considerado?
Eu estava escrevendo uma consulta para recuperar arquivos de um diretório, que é a consulta:
string[] imageArray = Directory.GetFiles(directory);
No entanto, desde que eu gosto de trabalhar List<>
, decidi colocar ...
List<string> imageList = Directory.GetFiles(directory).ToList();
Portanto, existe algum tipo de impacto no desempenho que deve ser considerado ao decidir fazer uma conversão como essa - ou somente quando se lida com um grande número de arquivos? Esta é uma conversão insignificante?
Add
ou Remove
, gostaria de deixá-lo como IEnumerable<T>
(ou até melhor var
)
EnumerateFiles
vez de GetFiles
, para que apenas uma matriz seja criada.
GetFiles(directory)
, como é implementado no .NET atualmente, praticamente faz new List<string>(EnumerateFiles(directory)).ToArray()
. Então, GetFiles(directory).ToList()
cria uma lista, cria uma matriz a partir disso e cria uma lista novamente. Como 2kay diz, você deve preferir fazer EnumerateFiles(directory).ToList()
aqui.
List<T>
favor de aT[]
se tornasse o código mais lógico / legível / sustentável (a menos que a conversão estivesse causando problemas visíveis de desempenho, nesse caso, eu visitá-lo, eu acho).