I am searching a moderate number (~500) of folders for a large number (~200,000) of files from a .NET application.
I hoped to use
DirectoryInfo.GetFiles, passing in
SearchOption.AllDirectories. However this approach seems to be a lot slower than writing my own code to iterate through the directories and do
GetFiles just passing in a
Related MSDN info:
Returns a file list from the current directory matching the given searchPattern.
Returns a file list from the current directory matching the given searchPattern and using a value to determine whether to search subdirectories.
Has anyone had a similar experience to this?
These two functions are actually infamous for their performance. The reason is that
GetFiles walks entire directory tree and constructs an array of
FileInfo objects, and only then returns the result to the caller. Construction of said array involves a lot of memory allocations (I’m sure they use
List internally, but still) since the number of entries cannot be known ahead of time.
Answered By – Anton Gogolev
Answer Checked By – Gilberto Lyons (BugsFixing Admin)