¿Cuál es la diferencia entre Directory.EnumerateFiles
vs GetFiles
?
Obviamente uno devuelve una matriz y el otro devuelve Enumerable.
¿Algo más?
De los documentos :
Los métodos EnumerateFiles y GetFiles difieren de la siguiente manera: Cuando utiliza EnumerateFiles, puede comenzar a enumerar la colección de nombres antes de que se devuelva toda la colección; cuando usa GetFiles, debe esperar a que se devuelva toda la matriz de nombres para poder acceder a la matriz. Por lo tanto, cuando trabaja con muchos archivos y directorios, EnumerateFiles puede ser más eficiente.
Básicamente, EnumerateFiles
devuelve un IEnumerable
que se puede evaluar de forma perezosa un tanto, mientras que GetFiles
devuelve una string[]
que debe rellenarse por completo antes de que pueda volver.
EnumerateFiles
devuelve IEnumerable
y eso implica la ejecución diferida. Solo está disponible en Fx4 y arriba.
Al utilizar EnumerateFiles, toda la velocidad se pierde si está utilizando. .Last
. Esto tiene sentido, por supuesto, porque para llegar al último archivo, tendrá que enumerar todos los archivos, luego tomar el último.
Sin embargo, usar .First
o .FirstOrDefault
vuelve muy rápido, ya que simplemente toma el primer elemento y continúa.